Remplissage automatique de l’IPD
Certains pilotes sont capables de définir les champs de l’IPD une fois qu’une requête paramétrable a été préparée. Les champs de descripteur sont automatiquement renseignés avec des informations sur le paramètre, notamment le type de données, la précision, l’échelle et d’autres caractéristiques. Cela équivaut à prendre en charge SQLDescribeParam. Ces informations peuvent être particulièrement précieuses pour une application lorsqu’elle n’a aucun autre moyen de le découvrir, par exemple lorsqu’une requête ad hoc est effectuée avec des paramètres que l’application ne connaît pas.
Une application détermine si le pilote prend en charge la population automatique en appelant SQLGetConnectAttr avec un attribut de SQL_ATTR_AUTO_IPD. Si SQL_TRUE est retourné, le pilote le prend en charge et l’application peut l’activer en définissant l’attribut d’instruction SQL_ATTR_ENABLE_AUTO_IPD sur SQL_TRUE.
Lorsque la population automatique est prise en charge et activée, le pilote remplit les champs de l’IPD après qu’une instruction SQL contenant des marqueurs de paramètre a été préparée par un appel à SQLPrepare. Une application peut récupérer ces informations en appelant SQLGetDescField ou SQLGetDescRec ou SQLDescribeParam. L’application peut utiliser les informations pour lier la mémoire tampon d’application la plus appropriée pour un paramètre ou pour spécifier une conversion de données pour celle-ci.
La population automatique de l’IPD peut entraîner une pénalité de performances. Une application peut la désactiver en réinitialisant l’attribut d’instruction SQL_ATTR_ENABLE_AUTO_IPD à SQL_FALSE (valeur par défaut).