DB_EXPR : Insérer une expression SQL dans une requête

Comment :

Référence :

La fonction DB_EXPR insère une expression SQL native exactement comme celle entrée dans le SQL natif généré pour une requête FOCUS ou SQL.

La fonction DB_EXPR peut être utilisée dans une commande DEFINE, un DEFINE dans un fichier maître, une clause WHERE, une commande FILTER FILE, un filtre dans un fichier maître, ou une instruction SQL. Elle peut être utilisée dans une commande COMPUTE si la requête est une requête agrégée (utilise la commande SUM, WRITE, ou ADD) et contient une commande d'affichage unique. L'expression doit renvoyer une valeur unique.


Haut de page

x
Syntaxe : Insérer une expression SQL dans une requête avec DB_EXPR
DB_EXPR(native_SQL_expression)

où :

native_SQL_expression

est une chaîne SQL native partielle valide pour l'insertion dans le SQL généré par la requête. La chaîne SQL doit contenir des guillemets doubles (") autour de chaque référence de champ, à moins que la fonction ne soit utilisée dans un DEFINE avec une phrase WITH.


Haut de page

x
Référence : Notes d'utilisation pour la fonction DB_EXPR


Exemple : Insérer les fonctions DB2 BIGINT et CHAR dans une requête TABLE

La requête TABLE suivante contre la source de données WF_RETAIL utilise la fonction DB_EXPR dans la commande COMPUTE pour appeler les deux fonctions DB2. Elle appelle la fonction BIGINT pour convertir les revenus au carré à un type de données BIGINT, puis utilise la fonction CHAR pour convertir cette valeur en alphanumérique.

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 est un exemple de source de données que vous pouvez créer en effectuant un clic droit sur une application sur la console Web du serveur de rapports et en sélectionnant Nouveau puis Exemples à partir du menu contextuel.

La trace montre que l'expression de la fonction DB_EXPR a été insérée dans une instruction 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 sortie est :


Information Builders