DB_EXPT: Como Inserir uma Expressão SQL em uma Solicitação

Como:

Referência:

A função DB_EXPR insere uma expressão SQL nativa exatamente como inserida na SQL nativa gerada para uma solicitação de linguagem FOCUS ou SQL.

A função DB_EXPR pode ser utilizada em um comando DEFINE, um DEFINE em um Arquivo Master, uma cláusula WHERE, um comando FILTER FILE, um filtro em um Arquivo Master ou em uma declaração SQL. Ela pode ser usada em um comando COMPUTE caso a solicitação seja de agregação (utiliza o comando SUM, WRITE ou ADD) e possua um comando de exibição simples. A expressão deve retornar um valor simples.


Topo da página

x
Sintaxe: Como Inserir uma Expressão SQL em uma Solicitação com DB_EXPR
DB_EXPR(native_SQL_expression)

onde:

native_SQL_expression

É uma string parcial SQL nativa válida para a inserção no SQL gerado pela solicitação. A string SQL deve possuir aspas duplas (") em volta de cada referência de campo, a não ser que a função seja utilizada em um DEFINE com uma frase WITH.


Topo da página

x
Referência: Observações sobre o Uso para a Função DB_EXPR


Exemplo: Como Inserir as Funções DB2 BIGINT e CHAR em uma SOlicitação TABLE

A solicitação TABLE a seguir na fonte de dados WF_RETAIL utiliza a função DB_EXPR no comando COMPUTE para chamar duas funções DB2. Ela chama a função BIGINT para converter a renda quadrada em um tipo de dado BIGINT e, em seguida, utiliza a função CHAR para converter aquele valor em alfanumérico.

TABLE FILE WF_RETAIL
SUM REVENUE NOPRINT
AND COMPUTE BIGREV/A31 = DB_EXPR(CHAR(BIGINT("REVENUE" * "REVENUE") ) ) ; AS 'Alpha Square Revenue'
BY REGION
ON TABLE SET PAGE NOPAGE
END

WF_RETAIL é uma fonte de dados de exemplo que você pode criar clicando com o botão direito em um aplicativo no Console da Web do Servidor de Relatórios selecionando Novo e, em seguida, Exemplos no menu de contexto.

O rastro mostra que a expressão da função DB_EXPR foi inserido nadeclaração DB2 SELECT:

  SELECT   
  T11."REGION",  
   SUM(T1."Revenue"),  
   ((CHAR(BIGINT( SUM(T1."Revenue") *  SUM(T1."Revenue")) ) ))  
   FROM   
  wrd_fact_sales T1,  
  wrd_dim_customer T5,  
  wrd_dim_geography T11  
   WHERE   
  (T5."ID_CUSTOMER" = T1."ID_CUSTOMER") AND   
  (T11."ID_GEOGRAPHY" = T5."ID_GEOGRAPHY")  
   GROUP BY   
  T11."REGION  "
   ORDER BY   
  T11."REGION  "
   FOR FETCH ONLY; 
END  

A saída é:


Information Builders