3. Langages de requête et de manipulation des données
93
Lorsque cela arrive, la mise à jour porte sur une partie ou la totalité
des données du tuple vers lequel pointe le curseur. S'il faut traiter une
table d'après une séquence de tri déterminée, nous ajoutons une clause
ORDER BY dans la déclaration du curseur.
Possibilité de
déclarer plusieurs
curseurs
Pour naviguer dans les tables, nous pouvons utiliser plusieurs
CURSEURs dans un programme. Chaque curseur doit être déclaré, puis
activé par la commande OPEN, et désactivé après l'usage par la
commande CLOSE. L'accès proprement dit à une table et le transfert
des valeurs de données aux variables appropriées dans un programme
se réalisent par la commande FETCH. Les types de variables, définis
dans le langage de programmation choisi, doivent être compatibles
avec les formats des champs de la table considérée. La syntaxe de la
commande FETCH se présente comme suit :
Commande Fetch
FETCH nom du curseur INTO variable hôte [, variable hôte]
Chaque commande FETCH avance la position du CURSEUR au
tuple suivant, soit selon l'ordre physique des tuples dans la table en
question, soit selon une clause ORDER BY. Si le curseur ne trouve plus
de tuples, le programme émet un code d'état associé à cette situation.
Langage interactif
ou immergé
Le concept de CURSEUR permet d'intégrer un langage de requête
et de manipulation de données ensembliste dans un langage hôte
procédural. Ainsi, les constructions du langage SQL peuvent être
utilisées aussi bien en mode interactif (ad-hoc) qu’en mode
programmation (langage immergé). Pour tester des modules de
programme en langage immergé, le SQL interactif présente un
avantage certain car nous pouvons l’utiliser à tout moment pour
analyser et vérifier le contenu des tables de test. Cependant, il
convient aussi de constater que l'intégration d'un langage relationnel
de requête et de manipulation de données dans un langage hôte donne
lieu généralement à des modules de programme qui manquent de
clarté ou qui s'écartent du style de programmation structurée.
Traduction et
optimisation
Avant la traduction et l'exécution d'un programme contenant des
éléments d'un langage relationnel immergé, un précompilateur a pour
tâche de vérifier la syntaxe du langage SQL. Il doit par exemple
signaler une erreur lorsque dans une instruction SELECT, le nombre
93
Lorsque cela arrive, la mise à jour porte sur une partie ou la totalité
des données du tuple vers lequel pointe le curseur. S'il faut traiter une
table d'après une séquence de tri déterminée, nous ajoutons une clause
ORDER BY dans la déclaration du curseur.
Possibilité de
déclarer plusieurs
curseurs
Pour naviguer dans les tables, nous pouvons utiliser plusieurs
CURSEURs dans un programme. Chaque curseur doit être déclaré, puis
activé par la commande OPEN, et désactivé après l'usage par la
commande CLOSE. L'accès proprement dit à une table et le transfert
des valeurs de données aux variables appropriées dans un programme
se réalisent par la commande FETCH. Les types de variables, définis
dans le langage de programmation choisi, doivent être compatibles
avec les formats des champs de la table considérée. La syntaxe de la
commande FETCH se présente comme suit :
Commande Fetch
FETCH nom du curseur INTO variable hôte [, variable hôte]
Chaque commande FETCH avance la position du CURSEUR au
tuple suivant, soit selon l'ordre physique des tuples dans la table en
question, soit selon une clause ORDER BY. Si le curseur ne trouve plus
de tuples, le programme émet un code d'état associé à cette situation.
Langage interactif
ou immergé
Le concept de CURSEUR permet d'intégrer un langage de requête
et de manipulation de données ensembliste dans un langage hôte
procédural. Ainsi, les constructions du langage SQL peuvent être
utilisées aussi bien en mode interactif (ad-hoc) qu’en mode
programmation (langage immergé). Pour tester des modules de
programme en langage immergé, le SQL interactif présente un
avantage certain car nous pouvons l’utiliser à tout moment pour
analyser et vérifier le contenu des tables de test. Cependant, il
convient aussi de constater que l'intégration d'un langage relationnel
de requête et de manipulation de données dans un langage hôte donne
lieu généralement à des modules de programme qui manquent de
clarté ou qui s'écartent du style de programmation structurée.
Traduction et
optimisation
Avant la traduction et l'exécution d'un programme contenant des
éléments d'un langage relationnel immergé, un précompilateur a pour
tâche de vérifier la syntaxe du langage SQL. Il doit par exemple
signaler une erreur lorsque dans une instruction SELECT, le nombre
