Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/odbc4.upl.
Cet exemple utilise les instructions de l'extension d'Up ! 5GL pour Up ! Query. Les objets sémantiques sont déclarés statiquement.
Pour compiler, UpsQry.upi doit être déclaré parmi les modules importés dans le fichier ${UPS_HOME}/ini/${UPS_USER}/upsp5l.ini.
Pour exécuter le script ${UPS_HOME}/upsqry/demo/french/odbc.sql doit être chargé pour la connexion scott/tiger.
upscmp Source=odbc4.upl
odbc4 ConnexionOdbc=scott/tiger@MaSourceOdbc
upssng Source=odbc4.upl ConnexionOdbc=scott/tiger@MaSourceOdbc
Source Composant "Exemple d'emploi d'Up ! Odbc" Version 4.0.0;
ImporterModule
/************/
UpsOdb(<UpsOdb.upi>, ImporterDefinitions);
ConnexionSql
/**********/
MaConnexionSql(Odbc, "scott/tiger");
Procedure ListerLesCatalogues()
/*****************************/
Debut
Ecran.Ecrire("ListerCatalogues");
Ecran.Ecrire("================");
RequeteSql CataloguesSql ConnexionSql MaConnexionSql
ResultatSql(NomCatalogue, Commentaire)
ParametreSql("scott", Nul);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(Commentaire, "?"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesSchemas()
/**************************/
Debut
Ecran.Ecrire("ListerSchemas");
Ecran.Ecrire("=============");
RequeteSql SchemasSql ConnexionSql MaConnexionSql
ResultatSql(?, NomCatalogue, NomSchema, Commentaire)
ParametreSql("scott", Nul, Nul);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(NomSchema, "?")+" - "+SiNul(Commentaire, "?"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesColonnes(NomCatalogue : Nul Ou Caractere, NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/********************************************************************************************************************/
Variable
/******/
Ligne : Caractere;
Debut
Ecran.Ecrire("ListerColonnes");
Ecran.Ecrire("--------------");
RequeteSql ColonnesTablesSql ConnexionSql MaConnexionSql
ResultatSql(?, ?, ?, ?, NomColonne, TypeColonne, TailleColonne, EstNul, Commentaire)
ParametreSql("scott", NomCatalogue, NomSchema, NomTable, Nul);
Selon TypeColonne Faire
Cas Pour SorteDonneeBinaire Faire
Ligne="Binaire";
Fin Cas
Cas Pour SorteDonneeCaractere Faire
Ligne="Caractere";
Fin Cas
Cas Pour SorteDonneeDate Faire
Ligne="Date";
Fin Cas
Cas Pour SorteDonneeEntier Faire
Ligne="Entier";
Fin Cas
Cas Pour SorteDonneeEnumere Faire
Ligne="Enumere";
Fin Cas
Cas Pour SorteDonneeReel Faire
Ligne="Reel";
Fin Cas
Cas Pour SorteDonneeAutre Faire
Ligne="Objet";
Fin Cas
Fin Selon
Si TailleColonne>0 Alors
Ligne+="("+Caractere(TailleColonne, "&&")+")";
Fin Si
Si EstNul Alors
Ligne="Nul Ou "+Ligne;
Fin Si
Ecran.Ecrire(SiNul(NomColonne, "?")+" - "+Ligne+" - "+SiNul(Commentaire, "?"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesClesPrimaires(NomCatalogue : Nul Ou Caractere, NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/**************************************************************************************************************************/
Debut
Ecran.Ecrire("ListerClesPrimaires");
Ecran.Ecrire("-------------------");
RequeteSql ClesPrimairesSql ConnexionSql MaConnexionSql
ResultatSql(?, ?, ?, ?, NomContrainte, EstUnique, NomColonne, NumeroColonne)
ParametreSql("scott", NomCatalogue, NomSchema, NomTable);
Ecran.Ecrire(SiNul(NomContrainte, "?")+" - "+Decoder(EstUnique, Vrai, "Unique", Faux, "Non unique")+" - "+
SiNul(NomColonne, "?")+" - "+Caractere(NumeroColonne, "&&"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesClesEtrangeres(NomCatalogue : Nul Ou Caractere, NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/***************************************************************************************************************************/
Debut
Ecran.Ecrire("ListerClesEtrangeres");
Ecran.Ecrire("--------------------");
RequeteSql ClesEtrangeresSql ConnexionSql MaConnexionSql
ResultatSql(NomContrainte, ?, ?, ?, NomTablePrimaire, NomColonnePrimaire, ?, ?, ?, ?, NomColonneEtrangere, ?)
ParametreSql("scott", NomCatalogue, NomSchema, NomTable);
Ecran.Ecrire(NomContrainte+" - "+NomColonneEtrangere+" - "+NomTablePrimaire+"."+NomColonnePrimaire);
Fin RequeteSql
Fin Procedure
Procedure ListerLesIndex(NomCatalogue : Nul Ou Caractere, NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/******************************************************************************************************************/
Debut
Ecran.Ecrire("ListerClesIndex");
Ecran.Ecrire("---------------");
RequeteSql IndexSql ConnexionSql MaConnexionSql
ResultatSql(?, ?, ?, ?, NomIndex, EstUnique, NomColonne, NumeroColonne)
ParametreSql("scott", NomCatalogue, NomSchema, NomTable);
Ecran.Ecrire(SiNul(NomIndex, "?")+" - "+Decoder(EstUnique, Vrai, "Unique", Faux, "Non unique")+" - "+
SiNul(NomColonne, "?")+" - "+Caractere(NumeroColonne, "&&"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesTables()
/*************************/
Debut
Ecran.Ecrire("ListerTables");
Ecran.Ecrire("============");
RequeteSql TablesSql ConnexionSql MaConnexionSql
ResultatSql(?, NomCatalogue, NomSchema, NomTable, SorteTable, Commentaire)
ParametreSql("scott", Nul, "scott", Nul, Nul);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(NomSchema, "?")+" - "+SiNul(NomTable, "?")+" - "+
Decoder(SorteTable, SorteTableSynonyme, "Synonyme", SorteTableTable, "Table", SorteTableVue, "Vue")+" - "+
SiNul(Commentaire, "?"));
Si SorteTable==SorteTableTable Alors
ListerLesColonnes(NomCatalogue, NomSchema, NomTable);
Si MaConnexionSql.ListerClesPrimairesSupporte Alors
ListerLesClesPrimaires(NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerClesPrimaires() non supporte.");
Fin Si
Si MaConnexionSql.ListerClesEtrangeresSupporte Alors
ListerLesClesEtrangeres(NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerClesEtrangeres() non supporte.");
Fin Si
Si MaConnexionSql.ListerIndexSupporte Alors
ListerLesIndex(NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerIndex() non supporte.");
Fin Si
Ecran.Ecrire("-----------");
Fin Si
Fin RequeteSql
Fin Procedure
Procedure ListerLesParametres(NomCatalogue : Nul Ou Caractere, NomSchema : Nul Ou Caractere, NomProcedure : Nul Ou Caractere)
/***************************************************************************************************************************/
Variable
/******/
Ligne : Caractere;
Debut
Ecran.Ecrire("ListerParametres");
Ecran.Ecrire("---------------");
RequeteSql ParametresProceduresSql ConnexionSql MaConnexionSql
ResultatSql(?, ?, ?, ?, NomParametre, TypeParametre, TailleParametre, EstNul, SorteDuParametre, ?, Commentaire)
ParametreSql("scott", NomCatalogue, NomSchema, NomProcedure, Nul);
Selon TypeParametre Faire
Cas Pour SorteDonneeBinaire Faire
Ligne="Binaire";
Fin Cas
Cas Pour SorteDonneeCaractere Faire
Ligne="Caractere";
Fin Cas
Cas Pour SorteDonneeDate Faire
Ligne="Date";
Fin Cas
Cas Pour SorteDonneeEntier Faire
Ligne="Entier";
Fin Cas
Cas Pour SorteDonneeEnumere Faire
Ligne="Enumere";
Fin Cas
Cas Pour SorteDonneeReel Faire
Ligne="Reel";
Fin Cas
Cas Pour SorteDonneeAutre Faire
Ligne="Objet";
Fin Cas
Fin Selon
Si TailleParametre>0 Alors
Ligne+="("+Caractere(TailleParametre, "&&")+")";
Fin Si
Si EstNul Alors
Ligne="Nul Ou "+Ligne;
Fin Si
Ecran.Ecrire(SiNul(NomParametre, "?")+" - "+Ligne+" - "+
Decoder(SorteDuParametre, ParametreEntree, "Entree", ParametreSortie, "Sortie", ParametreEntreeSortie, "EntreeSortie")+" - "+
SiNul(Commentaire, "?"));
Fin RequeteSql
Fin Procedure
Procedure ListerLesProcedures()
/*****************************/
Debut
Ecran.Ecrire("ListerProcedures");
Ecran.Ecrire("================");
RequeteSql ProceduresSql ConnexionSql MaConnexionSql
ResultatSql(?, NomCatalogue, NomSchema, NomProcedure, EstUneFonction, ?, Commentaire)
ParametreSql("scott", Nul, "scott", Nul);
Ecran.Ecrire(SiNul(NomProcedure, "?")+" - "+Decoder(EstUneFonction, Vrai, "Fonction", Faux, "Procedure")+" - "+SiNul(Commentaire, "?"));
ListerLesParametres(NomCatalogue, NomSchema, NomProcedure);
Ecran.Ecrire("-----------");
Fin RequeteSql
Fin Procedure
Principal
/*******/
Debut
Si MaConnexionSql.ListerCataloguesSupporte Alors
ListerLesCatalogues();
Sinon
Ecran.Ecrire("ListerCatalogues() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerSchemasSupporte Alors
ListerLesSchemas();
Sinon
Ecran.Ecrire("ListerSchemas() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerTablesSupporte Alors
ListerLesTables();
Sinon
Ecran.Ecrire("ListerTables() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerProceduresSupporte Alors
ListerLesProcedures();
Sinon
Ecran.Ecrire("ListerProcedures() non supporte.");
Fin Si
Ecran.Ecrire(");
Fin Principal