Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/odbc3.upl.
Cet exemple n'utilise pas les instructions de l'extension d'Up ! 5GL pour Up ! Query. Les objets sémantiques sont construits dynamiquement.
Pour exécuter, le script ${UPS_HOME}/upsqry/demo/french/odbc.sql doit être chargé pour la connexion scott/tiger.
upscmp Source=odbc3.upl
odbc3 ConnexionOdbc=scott/tiger@MaSourceOdbc
upssng Source=odbc3.upl ConnexionOdbc=scott/tiger@MaSourceOdbc
Source Composant "Exemple d'emploi d'Up ! Odbc" Version 4.0.0;
ImporterModule
/************/
UpsQry(<UpsQry.upi>, ImporterDefinitions);
UpsOdb(<UpsOdb.upi>, ImporterDefinitions);
Procedure ListerLesCatalogues(MaConnexionSql : Nul Ou IConnexionSql)
/******************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomCatalogue : Nul Ou Caractere;
Commentaire : Nul Ou Caractere;
Debut
Ecran.Ecrire("ListerCatalogues");
Ecran.Ecrire("================");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerCatalogues("scott"));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomCatalogue", NomCatalogue);
Enregistrement.LireResultat("Commentaire", Commentaire);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(Commentaire, "?"));
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesSchemas(MaConnexionSql : Nul Ou IConnexionSql)
/***************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomCatalogue : Nul Ou Caractere;
NomSchema : Nul Ou Caractere;
Commentaire : Nul Ou Caractere;
Debut
Ecran.Ecrire("ListerSchemas");
Ecran.Ecrire("=============");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerSchemas("scott"));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomCatalogue", NomCatalogue);
Enregistrement.LireResultat("NomSchema", NomSchema);
Enregistrement.LireResultat("Commentaire", Commentaire);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(NomSchema, "?")+" - "+SiNul(Commentaire, "?"));
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesColonnes(MaConnexionSql : Nul Ou IConnexionSql, NomCatalogue : Nul Ou Caractere,
NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/*************************************************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomColonne : Nul Ou Caractere;
TypeColonne : Nul Ou SorteDonneesSupportees;
TailleColonne : Nul Ou Entier;
EstNul : Nul Ou Booleen;
Commentaire : Nul Ou Caractere;
Ligne : Caractere;
Debut
Ecran.Ecrire("ListerColonnes");
Ecran.Ecrire("--------------");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerColonnesTables("scott", NomCatalogue, NomSchema, NomTable));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomColonne", NomColonne);
Enregistrement.LireResultat("TypeColonne", TypeColonne);
Enregistrement.LireResultat("TailleColonne", TailleColonne);
Enregistrement.LireResultat("EstNul", EstNul);
Enregistrement.LireResultat("Commentaire", Commentaire);
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 Pour
Fin Si
Fin Procedure
Procedure ListerLesClesPrimaires(MaConnexionSql : Nul Ou IConnexionSql, NomCatalogue : Nul Ou Caractere,
NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/******************************************************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomContrainte : Nul Ou Caractere;
EstUnique : Nul Ou Booleen;
NomColonne : Nul Ou Caractere;
NumeroColonne : Nul Ou Entier;
Debut
Ecran.Ecrire("ListerClesPrimaires");
Ecran.Ecrire("-------------------");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerClesPrimaires("scott", NomCatalogue, NomSchema, NomTable));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomContrainte", NomContrainte);
Enregistrement.LireResultat("EstUnique", EstUnique);
Enregistrement.LireResultat("NomColonne", NomColonne);
Enregistrement.LireResultat("NumeroColonne", NumeroColonne);
Ecran.Ecrire(SiNul(NomContrainte, "?")+" - "+Decoder(EstUnique, Vrai, "Unique", Faux, "Non unique")+" - "+
SiNul(NomColonne, "?")+" - "+Caractere(NumeroColonne, "&&"));
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesClesEtrangeres(MaConnexionSql : Nul Ou IConnexionSql, NomCatalogue : Nul Ou Caractere,
NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/*******************************************************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomContrainte : Nul Ou Caractere;
NomColonneEtrangere : Nul Ou Caractere;
NomTablePrimaire : Nul Ou Caractere;
NomColonnePrimaire : Nul Ou Caractere;
Debut
Ecran.Ecrire("ListerClesEtrangeres");
Ecran.Ecrire("--------------------");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerClesEtrangeres("scott", NomCatalogue, NomSchema, NomTable));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomContrainte", NomContrainte);
Enregistrement.LireResultat("NomColonneEtrangere", NomColonneEtrangere);
Enregistrement.LireResultat("NomTablePrimaire", NomTablePrimaire);
Enregistrement.LireResultat("NomColonnePrimaire", NomColonnePrimaire);
Ecran.Ecrire(NomContrainte+" - "+NomColonneEtrangere+" - "+NomTablePrimaire+"."+NomColonnePrimaire);
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesIndex(MaConnexionSql : Nul Ou IConnexionSql, NomCatalogue : Nul Ou Caractere,
NomSchema : Nul Ou Caractere, NomTable : Nul Ou Caractere)
/**********************************************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomIndex : Nul Ou Caractere;
EstUnique : Nul Ou Booleen;
NomColonne : Nul Ou Caractere;
NumeroColonne : Nul Ou Entier;
Debut
Ecran.Ecrire("ListerClesIndex");
Ecran.Ecrire("---------------");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerIndex("scott", NomCatalogue, NomSchema, NomTable));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomIndex", NomIndex);
Enregistrement.LireResultat("EstUnique", EstUnique);
Enregistrement.LireResultat("NomColonne", NomColonne);
Enregistrement.LireResultat("NumeroColonne", NumeroColonne);
Ecran.Ecrire(SiNul(NomIndex, "?")+" - "+Decoder(EstUnique, Vrai, "Unique", Faux, "Non unique")+" - "+
SiNul(NomColonne, "?")+" - "+Caractere(NumeroColonne, "&&"));
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesTables(MaConnexionSql : Nul Ou IConnexionSql)
/**************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomCatalogue : Nul Ou Caractere;
NomSchema : Nul Ou Caractere;
NomTable : Nul Ou Caractere;
SorteTable : Nul Ou SorteTablesSupportees;
Commentaire : Nul Ou Caractere;
Debut
Ecran.Ecrire("ListerTables");
Ecran.Ecrire("============");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerTables("scott", Nul, "scott"));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomCatalogue", NomCatalogue);
Enregistrement.LireResultat("NomSchema", NomSchema);
Enregistrement.LireResultat("NomTable", NomTable);
Enregistrement.LireResultat("SorteTable", SorteTable);
Enregistrement.LireResultat("Commentaire", Commentaire);
Ecran.Ecrire(SiNul(NomCatalogue, "?")+" - "+SiNul(NomSchema, "?")+" - "+SiNul(NomTable, "?")+" - "+
Decoder(SorteTable, SorteTableSynonyme, "Synonyme", SorteTableTable, "Table", SorteTableVue, "Vue")+" - "+
SiNul(Commentaire, "?"));
Si SorteTable==SorteTableTable Alors
ListerLesColonnes(MaConnexionSql, NomCatalogue, NomSchema, NomTable);
Si MaConnexionSql.ListerClesPrimairesSupporte Alors
ListerLesClesPrimaires(MaConnexionSql, NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerClesPrimaires() non supporte.");
Fin Si
Si MaConnexionSql.ListerClesEtrangeresSupporte Alors
ListerLesClesEtrangeres(MaConnexionSql, NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerClesEtrangeres() non supporte.");
Fin Si
Si MaConnexionSql.ListerIndexSupporte Alors
ListerLesIndex(MaConnexionSql, NomCatalogue, NomSchema, NomTable);
Sinon
Ecran.Ecrire("ListerIndex() non supporte.");
Fin Si
Ecran.Ecrire("-----------");
Fin Si
Fin Pour
Fin Si
Fin Procedure
Procedure ListerLesParametres(MaConnexionSql : Nul Ou IConnexionSql, NomCatalogue : Nul Ou Caractere,
NomSchema : Nul Ou Caractere, NomProcedure : Nul Ou Caractere)
/***************************************************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomParametre : Nul Ou Caractere;
TypeParametre : Nul Ou SorteDonneesSupportees;
TailleParametre : Nul Ou Entier;
EstNul : Nul Ou Booleen;
SorteDuParametre : Nul Ou SorteParametre;
Commentaire : Nul Ou Caractere;
Ligne : Caractere;
Debut
Ecran.Ecrire("ListerParametres");
Ecran.Ecrire("---------------");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerParametresProcedures("scott", NomCatalogue, NomSchema, NomProcedure));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomParametre", NomParametre);
Enregistrement.LireResultat("TypeParametre", TypeParametre);
Enregistrement.LireResultat("TailleParametre", TailleParametre);
Enregistrement.LireResultat("EstNul", EstNul);
Enregistrement.LireResultat("SorteParametre", SorteDuParametre);
Enregistrement.LireResultat("Commentaire", Commentaire);
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 Pour
Fin Si
Fin Procedure
Procedure ListerLesProcedures(MaConnexionSql : Nul Ou IConnexionSql)
/******************************************************************/
Variable
/******/
MonResultatSql : Nul Ou ResultatRequeteSql;
Enregistrement : Nul Ou EnregistrementSql;
NomCatalogue : Nul Ou Caractere;
NomSchema : Nul Ou Caractere;
NomProcedure : Nul Ou Caractere;
EstUneFonction : Nul Ou Booleen;
Commentaire : Nul Ou Caractere;
Debut
Ecran.Ecrire("ListerProcedures");
Ecran.Ecrire("================");
MonResultatSql=ResultatRequeteSql(MaConnexionSql.ListerProcedures("scott", Nul, "scott"));
Si MonResultatSql.NbEnregistrements>0 Alors
Pour Enregistrement=MonResultatSql.ParcoursAuDebut() JusquA MonResultatSql.DernierElement() Faire
Enregistrement.LireResultat("NomCatalogue", NomCatalogue);
Enregistrement.LireResultat("NomSchema", NomSchema);
Enregistrement.LireResultat("NomProcedure", NomProcedure);
Enregistrement.LireResultat("EstUneFonction", EstUneFonction);
Enregistrement.LireResultat("Commentaire", Commentaire);
Ecran.Ecrire(SiNul(NomProcedure, "?")+" - "+Decoder(EstUneFonction, Vrai, "Fonction", Faux, "Procedure")+" - "+SiNul(Commentaire, "?"));
ListerLesParametres(MaConnexionSql, NomCatalogue, NomSchema, NomProcedure);
Ecran.Ecrire("-----------");
Fin Pour
Fin Si
Fin Procedure
Principal
/*******/
Variable
/******/
MaConnexionSql : Nul Ou ConnexionOdbc;
Debut
MaConnexionSql=ConnexionOdbc("scott", "tiger");
Si MaConnexionSql.ListerCataloguesSupporte Alors
ListerLesCatalogues(IConnexionSql(MaConnexionSql));
Sinon
Ecran.Ecrire("ListerCatalogues() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerSchemasSupporte Alors
ListerLesSchemas(IConnexionSql(MaConnexionSql));
Sinon
Ecran.Ecrire("ListerSchemas() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerTablesSupporte Alors
ListerLesTables(IConnexionSql(MaConnexionSql));
Sinon
Ecran.Ecrire("ListerTables() non supporte.");
Fin Si
Ecran.Ecrire(");
Si MaConnexionSql.ListerProceduresSupporte Alors
ListerLesProcedures(IConnexionSql(MaConnexionSql));
Sinon
Ecran.Ecrire("ListerProcedures() non supporte.");
Fin Si
Ecran.Ecrire(");
Fin Principal