DB_EXPR: Cómo insertar una expresión de SQL en una solicitud

Cómo:

Referencia:

La función DB_EXPR inserta una expresión nativa de SQL exactamente como se introdujo en el SQL nativo, generado para una solicitud de lenguaje FOCUS o SQL.

La función DB_EXPR puede usarse en un comando DEFINE, un DEFINE en un archivo máster, una cláusula WHERE, un comando FILTER FILE, un filtro en un archivo máster o en una declaración de SQL. Puede usarla en un comando COMPUTE si la solicitud es de tipo agregación (utiliza un comando SUM, WRITE o ADD) y sólo tiene un comando de visualización. La expresión debe devolver un valor único.


Principio de página

x
Sintaxis: Cómo Insertar una expresión de SQL en una solicitud con DB_EXPR
DB_EXPR(native_SQL_expression)

donde:

native_SQL_expression

Es una expresión parcial, nativa de SQL, válida para ser insertada en el SQL generado por la solicitud. La cadena SQL debe tener comillas dobles (") alrededor de cada referencia de campo, a menos que la función se esté usando en un DEFINE con una frase WITH.


Principio de página

x
Referencia: Notas de uso de la función DB_EXPR


Ejemplo: Cómo insertar las funciones DB2 BIGINT y CHAR en una solicitud de TABLE

La siguiente solicitud de TABLE, basada en el origen de datos WF_RETAIL, usa la función DB_EXPR en el comando COMPUTE para llamar a dos funciones de DB2. Llama a la función BIGINT para convertir los ingresos cuadrados en un tipo de datos BIGINT y, a continuación, usa la función CHAR para convertir ese valor en 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 es un origen de datos de ejemplo que se crea pulsando con el botón derecho sobre una aplicación, en la Consola Web del Servidor de informes, y seleccionando Nuevo, Ejemplos en el menú de contexto.

El seguimiento muestra que la expresión de la función DB_EXPR ha quedado insertada en la declaración de 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  

La salida es:


WebFOCUS