Utiliser des sous selects en SQR

Quand on utilise un sous select dans la clause FROM d’un ordre SQL, il arrive que l’analyseur râle si on utilise des clauses dynamiques entre crochets.

En effet, l’analyse du code se produit alors à la compilation, et l’analyseur est incapable de construire correctement la requête.

Pour arranger ça, il faut empêcher l’analyseur de fonctionner lors de la phase de compilation, en le forçant à différer son analyse jusqu’à l’exécution effective du code.

Pour cela, on peut utiliser une astuce. Il faut définir avant le BEGIN-SELECT une variable :

let $necessary = ''

Qu’on placera judicieusement après le FROM contenant la « vue dynamique » :


from [$necessary] (
select /*+ no_merge */ B.BUSINESS_UNIT ,
L.DESCR,
B.CUST_ID,


Ainsi, tout se passe bien.