Oracle Pro*C/C++ : des concepts

Par gtruong, 19 février, 2024

Le précompilateur Oracle Pro*C/C++ ouvre la voie à une intégration transparente des instructions SQL au sein des programmes en langage élevé. Cette section explore les rouages du développement d'applications avec Pro C/C++, mettant en lumière l'environnement spécial dans lequel ces applications opèrent et leur impact sur la conception des applications.

## Concepts clés de la programmation SQL intégrée

La programmation SQL intégrée fait référence aux instructions SQL placées à l'intérieur d'un programme d'application. Le programme d'application est alors appelé programme hôte, et le langage dans lequel il est écrit est appelé langage hôte. Par exemple, Pro*C/C++ permet d'imbriquer des instructions SQL dans un programme hôte écrit en C ou en C++.

### Syntaxe SQL intégrée

Dans un programme d'application, vous pouvez librement mélanger des instructions SQL complètes avec des instructions C complètes et utiliser des variables ou des structures C dans des instructions SQL. La seule exigence spéciale pour intégrer des instructions SQL dans votre programme hôte est de les commencer par les mots-clés EXEC SQL et de les terminer par un point-virgule.

### SQL statiques et dynamiques

La plupart des programmes d'application sont conçus pour traiter des instructions SQL statiques et des transactions fixes. Cependant, certaines applications peuvent être amenées à accepter et traiter n'importe quelle instruction SQL valide à l'exécution. La SQL dynamique est une technique de programmation avancée qui permet à votre programme d'accepter ou de construire des instructions SQL à l'exécution.

### Blocs PL/SQL intégrés

Pro*C/C++ traite un bloc PL/SQL comme une seule instruction SQL intégrée. Vous pouvez placer un bloc PL/SQL n'importe où dans un programme d'application où vous pouvez placer une instruction SQL. Pour intégrer du PL/SQL dans votre programme hôte, vous déclarez simplement les variables à partager avec PL/SQL et encadrez le bloc PL/SQL avec les mots-clés EXEC SQL EXECUTE et END-EXEC.

### Variables hôtes et indicateurs

Les variables hôtes sont la clé de la communication entre Oracle et votre programme. Une variable hôte est une variable scalaire ou agrégée déclarée en C et partagée avec Oracle, ce qui signifie que votre programme et Oracle peuvent référencer sa valeur.

### Types de données Oracle

Oracle reconnaît deux types de données : internes et externes. Les types de données internes spécifient comment Oracle stocke les données dans les colonnes de la base de données. Oracle utilise également des types de données internes pour représenter des pseudocolonnes de base de données.

### Utilisation des arrays

Pro*C/C++ vous permet de définir des variables hôtes de tableau (appelées tableaux hôtes) et des tableaux de structures et de les manipuler avec une seule instruction SQL.

### Équivalence des types de données

Pro*C/C++ ajoute de la flexibilité à vos applications en vous permettant d'équivalencer les types de données. Cela signifie que vous pouvez personnaliser la façon dont Oracle interprète les données d'entrée et formate les données de sortie.

### Zones SQL privées, curseurs et ensembles actifs

Pour traiter une instruction SQL, Oracle ouvre une zone de travail appelée zone SQL privée. La zone SQL privée stocke les informations nécessaires à l'exécution de l'instruction SQL. Un identifiant appelé curseur vous permet de nommer une instruction SQL, d'accéder aux informations de sa zone SQL privée et, dans une certaine mesure, de contrôler son traitement.

### Transactions, erreurs et avertissements

Une transaction est une série d'instructions SQL logiquement liées que Oracle traite comme une unité. Toutes les instructions de manipulation de données exécutées depuis la dernière définition de données, l'instruction COMMIT ou ROLLBACK, composent la transaction en cours.

### Support de la syntaxe SQL99

Les fonctionnalités Oracle sont conformes à la norme ANSI/ISO SQL99, y compris les jointures conformes à ANSI. Pro*C/C++ prend en charge toutes les fonctionnalités SQL99 prises en charge par la base de données Oracle.

##
En somme, le développement d'une application SQL intégrée implique plusieurs étapes, de la précompilation à la compilation et au lien des modules de programme. Des directives sont fournies pour guider la syntaxe SQL intégrée, les conventions de codage et les caractéristiques spécifiques à C.

Comprendre les concepts du précompilateur Pro*C/C++ ouvre la voie à la création d'applications robustes et performantes, intégrant harmonieusement la puissance du langage SQL avec la flexibilité des langages C et C++.


### Références
- docs.oracle.com, [Pro*C/C++ Programmer's Guide - Precompiler Concepts](https://docs.oracle.com/cd/E11882_01/appdev.112/e10825/pc_01int.htm#g10729) (Page consulté le 16 février 2024)

- Kyte, T. (2010). _Expert Oracle Database Architecture: Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions._ Apress.

- McDonald, C., Katz, C., & Beck, C. (2009). _Mastering Oracle PL/SQL: Practical Solutions._ Apress.

Commentaires