Share via


Types de descripteurs

Un descripteur est utilisé pour décrire l’une des options suivantes :

  • Ensemble de zéro ou plusieurs paramètres. Un descripteur de paramètre peut être utilisé pour décrire :

    • Mémoire tampon des paramètres d’application, qui contient les arguments dynamiques d’entrée définis par l’application ou les arguments dynamiques de sortie après l’exécution d’une instruction CALL de SQL.

    • Mémoire tampon des paramètres d’implémentation. Pour les arguments dynamiques d’entrée, cela contient les mêmes arguments que la mémoire tampon des paramètres de l’application, après toute conversion de données que l’application peut spécifier. Pour les arguments dynamiques de sortie, il contient les arguments retournés avant toute conversion de données que l’application peut spécifier.

    Pour les arguments dynamiques d’entrée, l’application doit fonctionner sur un descripteur de paramètre d’application avant d’exécuter une instruction SQL qui contient des marqueurs de paramètres dynamiques. Pour les arguments dynamiques d’entrée et de sortie, l’application peut spécifier différents types de données de ceux du descripteur de paramètre d’implémentation pour obtenir la conversion de données.

  • Une seule ligne de données de base de données. Un descripteur de ligne peut être utilisé pour décrire :

    • Mémoire tampon de ligne d’implémentation, qui contient la ligne de la base de données. (Ces mémoires tampons contiennent conceptuellement des données telles que écrites dans ou lues à partir de la base de données. Toutefois, la forme stockée des données de base de données n’est pas spécifiée. Une base de données peut effectuer une conversion supplémentaire sur les données de son formulaire dans la mémoire tampon d’implémentation.)

    • Mémoire tampon de ligne de l’application, qui contient la ligne de données telle qu’elle est présentée à l’application, après toute conversion de données que l’application peut spécifier.

    L’application fonctionne sur le descripteur de ligne de l’application dans tous les cas où les données de colonne de la base de données doivent apparaître dans les variables d’application. Pour obtenir la conversion des données de colonne, l’application peut spécifier différents types de données de ceux du descripteur de ligne d’implémentation.

Les types de descripteur sont résumés dans le tableau suivant.

Type de mémoire tampon Lignes Paramètres dynamiques
Mémoire tampon d’application Descripteur de ligne d’application (ARD) Descripteur de paramètre d’application (APD)
Mémoire tampon d’implémentation Descripteur de ligne d’implémentation (IRD) Descripteur de paramètre d’implémentation (IPD)

Pour le paramètre ou les mémoires tampons de ligne, si l’application spécifie différents types de données dans les enregistrements correspondants de l’implémentation et des descripteurs d’application, le pilote effectue la conversion de données lorsqu’elle utilise les descripteurs. Par exemple, il peut convertir des valeurs numériques et datetime au format de chaîne de caractères. (Pour les conversions valides, consultez Annexe D : Types de données.)

Un descripteur peut effectuer différents rôles. Différentes instructions peuvent partager n’importe quel descripteur que l’application alloue explicitement. Un descripteur de ligne dans une instruction peut servir de descripteur de paramètre dans une autre instruction.

Il est toujours connu si un descripteur donné est un descripteur d’application ou un descripteur d’implémentation, même si le descripteur n’a pas encore été utilisé dans une opération de base de données. Pour les descripteurs que l’implémentation alloue implicitement, l’implémentation enregistre la ligne prédéfinie par rapport au handle d’instruction. Tout descripteur que l’application alloue en appelant SQLAllocHandle est un descripteur d’application.