6.9 Les interfaces entre BD et programmes d’application
153
© Dunod – La photocopie non autorisée est un délit.
troduire par le pré-processeur par la commande :
exec SQL include SQLCA end-exec
Une requête dont le résultat comporte une seule ligne est en accord avec les principes des langages de programmation classiques, qui traitent un enregistrement à la
fois. L'exemple ci-dessous, exprimé dans un langage procédural fictif, illustre ces
principes. On observe que la requête SQL comporte une clause supplémentaire
(into) qui indique la destination des données extraites. Les noms des variables
externes apparaissant dans la requête sont préfixés du symbole ":".
exec SQL begin declare section end-exec;
NOM
char(32);
ADR
char(60);
LOC
char(30);
NUM
char(10);
exec SQL end declare section end-exec;
read NUM;
exec SQL
select NOM,ADRESSE,LOCALITE into :NOM,:ADR,:LOC
from CLIENT
where NCLI = :NUM
end-exec;
display NOM, ADR, LOC;
En revanche, un résultat comportant plusieurs lignes doit faire l'objet de précautions
particulières. Le protocole proposé s'inspire du schéma classique d'accès séquentiel
à un fichier, qui correspond généralement à ce qui suit :
déclarer le fichier F
...
ouvrir F
lire un enregistrement
tant que la lecture a réussi faire
traiter l’enregistrement
lire un enregistrement
fin
fermer F
En SQL, le fichier F correspond au résultat d'une requête d'extraction, auquel est
associé un curseur. Ce dernier doit être vu comme un fichier logique qu'il faut
ouvrir, qu'on peut lire ligne par ligne, puis qu'il faut fermer lorsque son traitement est
terminé.
L'accès aux lignes successives d'une table résultat est rendu possible grâce aux
principes suivants.
1. La requête SQL est transmise au SGBD par une commande de définition de
153
© Dunod – La photocopie non autorisée est un délit.
troduire par le pré-processeur par la commande :
exec SQL include SQLCA end-exec
Une requête dont le résultat comporte une seule ligne est en accord avec les principes des langages de programmation classiques, qui traitent un enregistrement à la
fois. L'exemple ci-dessous, exprimé dans un langage procédural fictif, illustre ces
principes. On observe que la requête SQL comporte une clause supplémentaire
(into) qui indique la destination des données extraites. Les noms des variables
externes apparaissant dans la requête sont préfixés du symbole ":".
exec SQL begin declare section end-exec;
NOM
char(32);
ADR
char(60);
LOC
char(30);
NUM
char(10);
exec SQL end declare section end-exec;
read NUM;
exec SQL
select NOM,ADRESSE,LOCALITE into :NOM,:ADR,:LOC
from CLIENT
where NCLI = :NUM
end-exec;
display NOM, ADR, LOC;
En revanche, un résultat comportant plusieurs lignes doit faire l'objet de précautions
particulières. Le protocole proposé s'inspire du schéma classique d'accès séquentiel
à un fichier, qui correspond généralement à ce qui suit :
déclarer le fichier F
...
ouvrir F
lire un enregistrement
tant que la lecture a réussi faire
traiter l’enregistrement
lire un enregistrement
fin
fermer F
En SQL, le fichier F correspond au résultat d'une requête d'extraction, auquel est
associé un curseur. Ce dernier doit être vu comme un fichier logique qu'il faut
ouvrir, qu'on peut lire ligne par ligne, puis qu'il faut fermer lorsque son traitement est
terminé.
L'accès aux lignes successives d'une table résultat est rendu possible grâce aux
principes suivants.
1. La requête SQL est transmise au SGBD par une commande de définition de
