4.11. SQL INTÉGRÉ {S10}
105
pouvons récupérer les résultats de cette requête de ligne unique dans des variables hôtes de la manière
suivante :
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR titre[128];
int id_film;
int nb_proj;
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT num_film, titre, COUNT(*)
INTO :id_film, :titre, :nb_proj
FROM film NATURAL JOIN projection
GROUP BY num_film, titre;
4.11.5 Variables indicateur
Présentation
Les variables indicateur sont des variables en langage C qui fournissent des informations complé-
mentaires pour les opérations de lecture ou d’insertion de données. Il existe plusieurs types d’utilisation
pour ces variables.
Valeurs NULL : Pour permettre aux applications de gérer les valeurs NULL.
Troncature de chaînes : Pour permettre aux applications de gérer les cas où les valeurs lues doivent
être tronquées pour tenir dans les variables hôtes.
Erreurs de conversion : Pour stocker les informations relatives aux erreurs.
Une variable indicateur est une variable hôte de type int suivant immédiatement une variable hôte
normale dans une instruction SQL.
Utilisation de variables indicateur
Dans les données SQL, la valeur NULL représente un attribut inconnu ou une information non appli-
cable. Il ne faut pas confondre la valeur NULL de SQL avec la constante du langage C qui porte le même
nom (NULL). Cette dernière représente un pointeur non initialisé, incorrect ou ne pointant pas vers un
contenu valide de zone mémoire.
La valeur NULL n’équivaut à aucune autre valeur du type défini pour les colonnes. Ainsi, si une
valeur NULL est lue dans la base de données et qu’aucune variable indicateur n’est fournie, une erreur est
générée (SQLE_NO_INDICATOR). Pour transmettre des valeurs NULL à la base de données ou en recevoir
des résultats NULL, des variables hôtes d’un type particulier sont requises : les variables indicateur.
Par exemple, dans l’exemple précédent, une erreur est générée si, pour une raison quelconque, le titre
du film n’existe pas et que sa valeur est NULL. Pour s’affranchir de ce problèm