Up ! Query et Up ! PostgreSQL - Version déclarative

Ce programme exécute des ordres Sql et Pl/Sql statiques pour PostgreSQL.

Le fichier source est ${UPS_HOME}/upsqry/demo/${UPS_LANGUAGE}/postgres2.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 analyser le fichier source, 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/postgres.sql doit être chargé pour la connexion scott/tiger.

Mode compilé

Commande de compilation

upscmp Source=postgres2.upl

Commande d'exécution

postgres2 ConnexionPostgreSQL=scott/tiger@localhost/scott

Mode interprété

upssng Source=postgres2.upl ConnexionPostgreSQL=scott/tiger@localhost/scott

Fichier source

Source Composant "Exemple d'emploi d'Up ! PostgreSQL" Version 4.0.0;

ImporterModule
/************/
ConnexionSql
/**********/
RequeteSql
/********/
Procedure ListerEmployes(NumeroDepartement2 : Entier)
/***************************************************/
Debut
Ecran.Ecrire("Département "+Caractere(NumeroDepartement2));
Ecran.Ecrire("==============");
RequeteSql MaRequeteSql2 ConnexionSql MaConnexionSql Fin RequeteSql
Fin Procedure

Procedure ListerEmployes2(NumeroDepartement2 : Entier)
/****************************************************/
Debut
Ecran.Ecrire("Département "+Caractere(NumeroDepartement2));
Ecran.Ecrire("==============");
RequeteSql MaRequeteSql Fin RequeteSql
Fin Procedure

Procedure MettreAJourSalaire()
/****************************/
OrdreSql
/******/
Debut
RequeteSql MaRequeteSql3 ConnexionSql MaConnexionSql Fin RequeteSql
ViderTableauParametreSql MonOrdreSql4;
MaConnexionSql.Valider();
Fin Procedure

Procedure InsererDescription()
/****************************/
Variable
/******/
Debut
RequeteSql MaRequeteSql4 ConnexionSql MaConnexionSql Description=NomEmploye+" - Ceci est un commentaire long sur le nom de l'employe.";
OrdreSql MonOrdreSql5 ConnexionSql MaConnexionSql Fin RequeteSql
MaConnexionSql.Valider();
Fin Procedure

Procedure ListerDescriptions()
/****************************/ Debut
Ecran.Ecrire("Description");
Ecran.Ecrire("===========");
RequeteSql MaRequeteSql5 ConnexionSql MaConnexionSql
Fin RequeteSql
Fin Procedure

Procedure InsererImage()
/**********************/
Variable
/******/
Debut
RequeteSql MaRequeteSql6 ConnexionSql MaConnexionSql Fin RequeteSql
MaConnexionSql.Valider();
Fin Procedure

Procedure ListerImages()
/**********************/
Variable
/******/
Debut
Ecran.Ecrire("Image");
Ecran.Ecrire("=====");
RequeteSql MaRequeteSql7 ConnexionSql MaConnexionSql Fin RequeteSql
Fin Procedure

Principal
/*******/
Variable
/******/
BlocSql
/*****/
OrdreSql
/******/
Debut /* Lecture parametree et rang a rang sans reutilisation du curseur. */
ListerEmployes(10);
ListerEmployes(20);
ListerEmployes(30);
Ecran.Ecrire(");

/* Lecture parametree et par tableau avec reutilisation du curseur. */
ListerEmployes2(10);
ListerEmployes2(20);
ListerEmployes2(30);
Ecran.Ecrire(");

/* Modifications annulees. */ OrdreSql MonOrdreSql7 ConnexionSql MaConnexionSql OrdreSql MonOrdreSql2 ParametreSql("youpi2", DateSysteme(), 9001, 40, 1001.00);
MaConnexionSql.Invalider();
ListerEmployes(40);
Ecran.Ecrire(");

/* Modifications validees. */
OrdreSql MonOrdreSql8 ConnexionSql MaConnexionSql OrdreSql MonOrdreSql2 ParametreSql("youpi4", DateSysteme(), 9101, 40, 1101.00);
MaConnexionSql.Valider();
ListerEmployes(40);
Ecran.Ecrire(");

/* Mise a jour par tableau. */
OrdreSql MonOrdreSql9 ConnexionSql MaConnexionSql MettreAJourSalaire();
ListerEmployes(10);
ListerEmployes(20);
ListerEmployes(30);
Ecran.Ecrire(");

/* Nettoyage des modifications. */
OrdreSql MonOrdreSql3;
MaConnexionSql.Valider();

/* Appel d'une procedure stockee. */
BlocSql MonBlocSql ParametreSql(10, SalaireMin, SalaireMax);
Ecran.Ecrire("SalaireMin="+Caractere(SalaireMin));
Ecran.Ecrire("SalaireMax="+Caractere(SalaireMax));

/* Appel d'une procedure stockee dans un paquet. */
BlocSql MonBlocSql3 ConnexionSql MaConnexionSql ParametreSql(NumeroDepartement2 : Entier=20, SalaireMin2 : Reel Sortie=SalaireMin, SalaireMax2 : Reel Sortie=SalaireMax)
SqlStatique Fin SqlStatique Ecran.Ecrire("SalaireMin="+Caractere(SalaireMin));
Ecran.Ecrire("SalaireMax="+Caractere(SalaireMax));

/* Appel d'une fonction stockee. */
BlocSql MonBlocSql2 ParametreSql(10, SalaireMoyen);
Ecran.Ecrire("SalaireMoyen="+Caractere(SalaireMoyen));

/* Appel d'une fonction stockee dans un paquet. */
BlocSql MonBlocSql4 ConnexionSql MaConnexionSql Ecran.Ecrire("SalaireMoyen="+Caractere(SalaireMoyen));
Ecran.Ecrire(");

/* Textes longs. */
OrdreSql MonOrdreSql10 ConnexionSql MaConnexionSql MaConnexionSql.Valider();
InsererDescription();
ListerDescriptions();
/* Images longs. */
OrdreSql MonOrdreSql11 ConnexionSql MaConnexionSql MaConnexionSql.Valider();
InsererImage();
ListerImages();
Fin Principal

Résultat de l'exécution

Département 10 ============== CLARK 1981/06/1 00:00:00 7,782 2,450.0000 KING 1981/11/1 00:00:00 7,839 5,000.0000 MILLER 1982/01/1 00:00:00 7,934 1,300.0000 Département 20 ============== SMITH 1980/12/1 00:00:00 7,369 800.0000 JONES 1981/04/1 00:00:00 7,566 2,975.0000 SCOTT 1982/12/1 00:00:00 7,788 3,000.0000 ADAMS 1983/01/1 00:00:00 7,876 1,100.0000 FORD 1981/12/1 00:00:00 7,902 3,000.0000 Département 30 ============== ALLEN 1981/02/1 00:00:00 7,499 1,600.0000 WARD 1981/02/1 00:00:00 7,521 1,250.0000 MARTIN 1981/07/1 00:00:00 7,654 1,250.0000 BLAKE 1981/05/1 00:00:00 7,698 2,850.0000 TURNER 1981/09/1 00:00:00 7,844 1,500.0000 JAMES 1981/12/1 00:00:00 7,900 950.0000 Département 10 ============== CLARK 1981/06/1 00:00:00 7,782 2,450.0000 KING 1981/11/1 00:00:00 7,839 5,000.0000 MILLER 1982/01/1 00:00:00 7,934 1,300.0000 Département 20 ============== SMITH 1980/12/1 00:00:00 7,369 800.0000 JONES 1981/04/1 00:00:00 7,566 2,975.0000 SCOTT 1982/12/1 00:00:00 7,788 3,000.0000 ADAMS 1983/01/1 00:00:00 7,876 1,100.0000 FORD 1981/12/1 00:00:00 7,902 3,000.0000 Département 30 ============== ALLEN 1981/02/1 00:00:00 7,499 1,600.0000 WARD 1981/02/1 00:00:00 7,521 1,250.0000 MARTIN 1981/07/1 00:00:00 7,654 1,250.0000 BLAKE 1981/05/1 00:00:00 7,698 2,850.0000 TURNER 1981/09/1 00:00:00 7,844 1,500.0000 JAMES 1981/12/1 00:00:00 7,900 950.0000 Département 40 ============== Département 40 ============== youpi3 2007/02/1 00:00:00 9,100 1,100.0000 youpi4 09/07/1 00:00:00 9,101 1,101.0000 Département 10 ============== CLARK 1981/06/1 00:00:00 7,782 2,450.0000 KING 1981/11/1 00:00:00 7,839 5,000.0000 MILLER 1982/01/1 00:00:00 7,934 1,300.0000 Département 20 ============== SMITH 1980/12/1 00:00:00 7,369 800.0000 JONES 1981/04/1 00:00:00 7,566 2,975.0000 SCOTT 1982/12/1 00:00:00 7,788 3,000.0000 ADAMS 1983/01/1 00:00:00 7,876 1,100.0000 FORD 1981/12/1 00:00:00 7,902 3,000.0000 Département 30 ============== ALLEN 1981/02/1 00:00:00 7,499 1,600.0000 WARD 1981/02/1 00:00:00 7,521 1,250.0000 MARTIN 1981/07/1 00:00:00 7,654 1,250.0000 BLAKE 1981/05/1 00:00:00 7,698 2,850.0000 TURNER 1981/09/1 00:00:00 7,844 1,500.0000 JAMES 1981/12/1 00:00:00 7,900 950.0000 SalaireMin=1,300.0000 SalaireMax=5,000.0000 SalaireMin=800.0000 SalaireMax=3,000.0000 SalaireMoyen=2,915.9794 SalaireMoyen=2,175.0000 Description =========== 7,782 : CLARK - Ceci est un commentaire long sur le nom de l'employe. 7,839 : KING - Ceci est un commentaire long sur le nom de l'employe. 7,934 : MILLER - Ceci est un commentaire long sur le nom de l'employe. Image ===== 7,782 : 1171 7,839 : 1068 7,934 : 1204