6.9 Les interfaces entre BD et programmes d’application
155
© Dunod – La photocopie non autorisée est un délit.
spécifiées dans ces commandes peuvent l'être sous forme de constantes (comme
dans les exemples SQL présentés jusqu'ici), ou de variables du programme.
Il existe une variante particulière des requêtes update et delete, qualifiée de
positioned. Elle consiste à traiter la ligne courante d'un curseur, comme dans
l'exemple suivant :
...
exec SQL declare CURCLI cursor for
select ... from CLIENT where LOCALITE = :LOC
end-exec;
...
LOC := 'Toulouse';
exec SQL open CURCLI end-exec;
exec SQL fetch CURCLI into :NUM,:NOM,:ADR end-exec;
while SQLCODE = 0 do
exec SQL
update CLIENT
set CAT = 'A1'
where current of CURCLI
end-exec;
exec SQL fetch CURCLI into :NUM,:NOM,:ADR end-exec;
endwhile;
exec SQL close CURCLI end-exec;
...
c) Définition et modification des structures de données
Les commandes SQL create table, create index, alter table, drop
table, drop index peuvent être exécutées par un programme. Elles apparaissent
dans le texte de celui-ci entre exec SQL et end-exec.
d) Définition dynamique de commandes SQL
Il existe une possibilité de définir dynamiquement une commande SQL. Ceci permet
de ne définir une commande qu'au moment où le programme s'exécute, par exemple
sur base de directives obtenues au terminal. Le programme construit la commande
sous la forme d'une chaîne de caractères. Cette chaîne est analysée par SQL (par
opposition à la définition statique, qui est analysée par le préprocesseur), puis peut
être exécutée. Ceci permet la réalisation de programmes exploitant la base de
données d'une manière non prédéfinie.
Les interfaces ODBC de Microsoft et JDBC (Java) correspondent également à
une exécution dynamique. En effet, elles consistent à transmettre au SGBD les
requêtes sous la forme de chaînes de caractères non validées. Ces questions
dépassant le cadre de l’ouvrage, le lecteur est renvoyé à la littérature plus spécialisée
[Delmal, 2001], [Reese, 1998], [Geiger, 1995].
155
© Dunod – La photocopie non autorisée est un délit.
spécifiées dans ces commandes peuvent l'être sous forme de constantes (comme
dans les exemples SQL présentés jusqu'ici), ou de variables du programme.
Il existe une variante particulière des requêtes update et delete, qualifiée de
positioned. Elle consiste à traiter la ligne courante d'un curseur, comme dans
l'exemple suivant :
...
exec SQL declare CURCLI cursor for
select ... from CLIENT where LOCALITE = :LOC
end-exec;
...
LOC := 'Toulouse';
exec SQL open CURCLI end-exec;
exec SQL fetch CURCLI into :NUM,:NOM,:ADR end-exec;
while SQLCODE = 0 do
exec SQL
update CLIENT
set CAT = 'A1'
where current of CURCLI
end-exec;
exec SQL fetch CURCLI into :NUM,:NOM,:ADR end-exec;
endwhile;
exec SQL close CURCLI end-exec;
...
c) Définition et modification des structures de données
Les commandes SQL create table, create index, alter table, drop
table, drop index peuvent être exécutées par un programme. Elles apparaissent
dans le texte de celui-ci entre exec SQL et end-exec.
d) Définition dynamique de commandes SQL
Il existe une possibilité de définir dynamiquement une commande SQL. Ceci permet
de ne définir une commande qu'au moment où le programme s'exécute, par exemple
sur base de directives obtenues au terminal. Le programme construit la commande
sous la forme d'une chaîne de caractères. Cette chaîne est analysée par SQL (par
opposition à la définition statique, qui est analysée par le préprocesseur), puis peut
être exécutée. Ceci permet la réalisation de programmes exploitant la base de
données d'une manière non prédéfinie.
Les interfaces ODBC de Microsoft et JDBC (Java) correspondent également à
une exécution dynamique. En effet, elles consistent à transmettre au SGBD les
requêtes sous la forme de chaînes de caractères non validées. Ces questions
dépassant le cadre de l’ouvrage, le lecteur est renvoyé à la littérature plus spécialisée
[Delmal, 2001], [Reese, 1998], [Geiger, 1995].
