Champs différés
Les valeurs des champs différés ne sont pas utilisées lorsqu’ils sont définis, mais le pilote enregistre les adresses des variables pour un effet différé. Pour un descripteur de paramètre d’application, le pilote utilise le contenu des variables au moment de l’appel à SQLExecDirect ou SQLExecute. Pour un descripteur de ligne d’application, le pilote utilise le contenu des variables au moment de la récupération.
Les champs suivants sont différés :
Champs SQL_DESC_DATA_PTR et SQL_DESC_INDICATOR_PTR d’un enregistrement de descripteur.
Champ SQL_DESC_OCTET_LENGTH_PTR d’un enregistrement de descripteur d’application.
Dans le cas d’une extraction multirow, les champs SQL_DESC_ARRAY_STATUS_PTR et SQL_DESC_ROWS_PROCESSED_PTR d’un en-tête de descripteur.
Lorsqu’un descripteur est alloué, les champs différés de chaque enregistrement de descripteur ont initialement une valeur Null. La signification de la valeur Null est la suivante :
Si SQL_DESC_ARRAY_STATUS_PTR a une valeur Null, une extraction multirow ne retourne pas ce composant des informations de diagnostic par ligne.
Si SQL_DESC_DATA_PTR a une valeur null, l’enregistrement n’est pas lié.
Si le champ SQL_DESC_OCTET_LENGTH_PTR d’une ARD a une valeur Null, le pilote ne retourne pas d’informations de longueur pour cette colonne.
Si le champ SQL_DESC_OCTET_LENGTH_PTR d’une APD a une valeur Null et que le paramètre est une chaîne de caractères, le pilote suppose que la chaîne est terminée par null. Pour les paramètres dynamiques de sortie, une valeur Null dans ce champ empêche le pilote de retourner des informations de longueur. (Si le champ SQL_DESC_TYPE n’indique pas de paramètre de chaîne de caractères, le champ SQL_DESC_OCTET_LENGTH_PTR est ignoré.)
L’application ne doit pas libérer ou dis carte variables utilisées pour les champs différés entre le moment où elle les associe aux champs et l’heure à laquelle le pilote lit ou les écrit.