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