Com­ment spé­ci­fier u…
 
Notifications 
Reti­rer tout

Com­ment spé­ci­fier un sché­ma par défaut en SQL ?

Posts
Uti­li­sa­teurs
Likes
68  Vu
0
Début du sujet

Dans un script de test fait avec iRp­gu­nit, je sou­haite pré­pa­rer des jeux de don­nées dans des tables créées pour la cir­cons­tance. Mais je ne connais pas la bibliothèque/schéma d’a­vance, c’est une infor­ma­tion trans­mise par para­mètre. Mais pour ne pas être obli­gé d’u­ti­li­ser des requêtes dyna­miques je sou­hai­te­rais savoir quelle est la com­mande SQL pour indi­quer à DB2 d’u­ti­li­ser tel sché­ma par défaut pour les requêtes ? Cordialement,

Éti­quettes du sujet
2 Réponses 
0

Après recherche :

Dans le cas de requêtes dyna­miques, on peut utiliser :

exec sql
        set Current Schema = :WorkLib;

Dans le cadre de requête SQL sta­ti­tique, le sché­ma peut être spé­ci­fié à la créa­tion de l’ob­jet avec :

exec sql SET OPTION DFTRDBCOL = BIBLIOTHEQUE;

ou avec l’op­tion DFTRDBCOL de CRTSQLRPGI où on spé­ci­fie le schéma.

L’in­con­vé­nient de ces 2 der­nières méthodes est que le nom du sché­ma ne peut pas être conte­nu dans une variable. Car ces deux méthodes s’ap­pliquent à la compilation.

Il reste une der­nière méthode, l’u­ti­li­sa­tion de la biblio­thèque courante(CURLIB) avec ces 2 instructions :

g_bib_defaut = 'BIB_PAR_DEFAUT';
QCMDEXC('CHGCURLIB ' +  g_bib_defaut:50);

Les requêtes SQL avec des tables non qua­li­fées seront recher­chées dans la biblio­thèque courante.

0

La solu­tion est sur cette page Spe­ci­fy SQL Table-crea­tion Libra­ry at Run­time.

En résu­mé, on peut utiliser :

exec sql
        set Current Schema = :WorkLib;
Share :