Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/oracle4.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, les scripts :
upscmp Source=oracle4.upl
oracle4 ConnexionOracle=scott/tiger
upssng Source=oracle4.upl ConnexionOracle=scott/tiger
Source Composant "Exemple d'emploi d'Up ! Oracle" Version 4.0.0;
ImporterModule
/************/
UpsOra(<UpsOra.upi>);
ConnexionSql
/**********/
MaConnexionSql(Oracle, "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,Nul,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,Nul,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