Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/odbc5.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=odbc5.upl
odbc5 ConnexionOdbc=scott/tiger@MaSourceOdbc
upssng Source=odbc5.upl ConnexionOdbc=scott/tiger@MaSourceOdbc
Source Composant "Exemple d'emploi d'Up ! Odbc" Version 4.0.0;
ConnexionSql
/**********/
MaConnexionSql(Odbc, "scott/tiger");
Procedure ListerEmployes(NumeroDepartement2 : Entier)
/***************************************************/
Variable
/******/
Ligne : Caractere;
Debut
Ecran.Ecrire("Département "+Caractere(NumeroDepartement2));
Ecran.Ecrire("==============");
RequeteSql MaRequeteSql ConnexionSql MaConnexionSql
ResultatSql(NomEmploye : Nul Ou Caractere TailleMaxSql 20, DateEmbauche : Nul Ou Date, NumeroEmploye : Nul Ou Entier, Salaire : Nul Ou Reel)
SqlDynamique
"SELECT ename:=${NomEmploye}, hiredate:=${DateEmbauche}, empno:=${NumeroEmploye}, sal:=${Salaire} FROM scott.emp WHERE deptno="
+Caractere(NumeroDepartement2, "&&");
Si PremierEnregistrementSql MaRequeteSql Alors
Ligne="Premier rang : ";
SinonSi DernierEnregistrementSql MaRequeteSql Alors
Ligne="Dernier rang : ";
Sinon
Ligne=Caractere(NumeroEnregistrementSql MaRequeteSql, "&&")+" : ";
Fin Si
Ecran.Ecrire(Ligne+NomEmploye+" "+Caractere(DateEmbauche)+" "+Caractere(NumeroEmploye)+" "+Caractere(Salaire));
Fin RequeteSql
Si PasDEnregistrementSql MaRequeteSql Alors
Ecran.Ecrire("Pas d'enregistrement");
Sinon
Ecran.Ecrire("Nombre d'enregistrement(s) : "+Caractere(NbEnregistrementsSql MaRequeteSql, "&&"));
Fin Si
OrdreSql MonOrdreSql ConnexionSql MaConnexionSql
SqlDynamique
"UPDATE scott.emp SET sal=-sal WHERE deptno="+Caractere(NumeroDepartement2, "&&");
Si PasDEnregistrementSql MonOrdreSql Alors
Ecran.Ecrire("Pas d'enregistrement");
Sinon
Ecran.Ecrire("Nombre d'enregistrement(s) : "+Caractere(NbEnregistrementsSql MonOrdreSql, "&&"));
Fin Si
Fin Procedure
Principal
/*******/
Debut
/* Lecture parametree et rang a rang sans reutilisation du curseur. */
ListerEmployes(10);
ListerEmployes(20);
ListerEmployes(30);
ListerEmployes(40);
MaConnexionSql.Invalider();
Fin Principal