DB_EXPR: Inserimento di una Espressione SQL in una richiesta

Come:

Riferimento:

La funzione DB_EXPR inserisce una espressione SQL nativa esattamente come immessa nell'SQL nativo, generata per una richiesta di lingua FOCUS o SQL.

Non è possibile usare la funzione DB_EXPR in un comando DEFINE, un DEFINE in un file principale, una clausola WHERE, un comando FILER FILE, un filtro in un file principale o in una istruzione SQL. È possibile usare questa funzione in un comando COMPUTE, se la richiesta è una richiesta aggregata (usa il comando SUM, WRITE o ADD) e presenta un comando di visualizzazione singola. L'espressione deve restituire un valore singolo.


Inizio pagina

x
Sintassi: Come inserire una espressione SQL in una richiesta con DB_EXPR
DB_EXPR(native_SQL_expression)

dove:

native_SQL_expression

Una stringa SQL parzialmente nativa, valida per l'inserimento nell'SQL generato dala richiesta. La stringa SQL deve avere le virgolette doppie (") intorno a ciascun riferimento campo, a meno che la funzione non venga usata in un DEFINE con una frase WITH.


Inizio pagina

x
Riferimento: Note per l'uso per la funzione DB_EXPR


Esempio: Inserimento delle funzioni DB2 BIGINT e CHAR in una richiesta TABLE

La seguente richiesta TABLE rispetto all'origine dati WF_RETAIL usa la funzione DB_EXPR nel comando COMPUTE per chimare due funzioni DB2. Chiama la funzione BIGINT per convertire il ricavo quadrato in un tipo dati BIGINT e quindi usa la funzione CHAR per convertire quel valore in alfanumerico.

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 è una origine dati campione da poter creare facendo clic con il tasto destro del mouse su una applicazione sulla console web del Reporting Server, selezionando Nuovo e quindi Campioni dal menu contestuale.

La traccia mostra che l'espressione dalla funzione DB_EXPR è stata inserita nell'istruzione 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  

L'emissione è:


WebFOCUS