Exemple Embedded SQL
Le code suivant est un programme SQL incorporé simple, écrit en C. Le programme illustre de nombreuses techniques SQL incorporées, mais pas toutes. Le programme invite l’utilisateur à entrer un numéro de commande, récupère le numéro de client, le vendeur et l’état de la commande et affiche les informations récupérées à l’écran.
int main() {
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
int OrderID; /* Employee ID (from user) */
int CustID; /* Retrieved customer ID */
char SalesPerson[10] /* Retrieved salesperson name */
char Status[6] /* Retrieved order status */
EXEC SQL END DECLARE SECTION;
/* Set up error processing */
EXEC SQL WHENEVER SQLERROR GOTO query_error;
EXEC SQL WHENEVER NOT FOUND GOTO bad_number;
/* Prompt the user for order number */
printf ("Enter order number: ");
scanf_s("%d", &OrderID);
/* Execute the SQL query */
EXEC SQL SELECT CustID, SalesPerson, Status
FROM Orders
WHERE OrderID = :OrderID
INTO :CustID, :SalesPerson, :Status;
/* Display the results */
printf ("Customer number: %d\n", CustID);
printf ("Salesperson: %s\n", SalesPerson);
printf ("Status: %s\n", Status);
exit();
query_error:
printf ("SQL error: %ld\n", sqlca->sqlcode);
exit();
bad_number:
printf ("Invalid order number.\n");
exit();
}
Notez ce qui suit sur ce programme :
Variables d’hôte Les variables hôtes sont déclarées dans une section entre les mots clés BEGIN DECLARE SECTION et END DECLARE SECTION . Chaque nom de variable hôte est précédé d’un signe deux-points (:) lorsqu’il apparaît dans une instruction SQL incorporée. Le signe deux-points permet au précompileur de faire la distinction entre les variables hôtes et les objets de base de données, tels que les tables et les colonnes, qui ont le même nom.
Types de données Les types de données pris en charge par un SGBD et un langage hôte peuvent être très différents. Cela affecte les variables d’hôte, car elles jouent un rôle double. D’une part, les variables hôtes sont des variables de programme, déclarées et manipulées par des instructions de langage hôte. En revanche, ils sont utilisés dans les instructions SQL incorporées pour récupérer les données de base de données. S’il n’existe aucun type de langage hôte qui correspond à un type de données SGBD, le SGBD convertit automatiquement les données. Toutefois, étant donné que chaque SGBD a ses propres règles et idiosyncrasies associées au processus de conversion, les types de variables hôtes doivent être choisis avec soin.
La gestion des erreurs du SGBD signale des erreurs d’exécution au programme des applications via une zone de communication SQL ou SQLCA. Dans l’exemple de code précédent, la première instruction SQL incorporée est INCLUDE SQLCA. Cela indique au précompileur d’inclure la structure SQLCA dans le programme. Cela est nécessaire chaque fois que le programme traite les erreurs retournées par le SGBD. LE CHAQUE FOIS... L’instruction GOTO indique au précompileur de générer le code de gestion des erreurs qui se branche vers une étiquette spécifique lorsqu’une erreur se produit.
Singleton SELECT L’instruction utilisée pour renvoyer les données est une instruction singleton SELECT ; autrement dit, elle ne retourne qu’une seule ligne de données. Par conséquent, l’exemple de code ne déclare pas ou n’utilise pas de curseurs.