SQLGetStmtOption, mappage
Lorsqu’une application appelle SQLGetStmtOption à un pilote ODBC 3.x qui ne le prend pas en charge, l’appel à
SQLGetStmtOption(hstmt, fOption, pvParam)
se traduit comme suit :
Si fOption indique une option d’instruction définie par ODBC qui retourne une chaîne, le Gestionnaire de pilotes appelle
SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, BufferLength, NULL)
Si fOption indique une option d’instruction définie par ODBC qui retourne une valeur entière 32 bits, le Gestionnaire de pilotes appelle
SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, 0, NULL)
Si fOption indique une option d’instruction définie par le pilote, le Gestionnaire de pilotes appelle
SQLGetStmtAttr(StatementHandle, Attribute, ValuePtr, BufferLength, NULL)
Dans les trois cas précédents, l’argument StatementHandle est défini sur la valeur dans hstmt, l’argument Attribute est défini sur la valeur dans fOption et l’argument ValuePtr est défini sur la même valeur que pvParam.
Pour les options de connexion de chaîne définies par ODBC, le Gestionnaire de pilotes définit l’argument BufferLength de l’appel à SQLGetConnectAttr sur la longueur maximale prédéfinie (SQL_MAX_OPTION_STRING_LENGTH) ; pour une option de connexion non chaîne, BufferLength est défini sur 0.
L’option d’instruction SQL_GET_BOOKMARK a été déconseillée dans ODBC 3.x. Pour qu’un pilote ODBC 3.x fonctionne avec des applications ODBC 2.x qui utilisent SQL_GET_BOOKMARK, il doit prendre en charge SQL_GET_BOOKMARK. Pour qu’un pilote ODBC 3.x fonctionne avec des applications ODBC 2.x , il doit prendre en charge le paramètre SQL_USE_BOOKMARKS pour SQL_UB_ON et doit exposer des signets de longueur fixe. Si un pilote ODBC 3.x prend uniquement en charge les signets de longueur variable, et non les signets de longueur fixe, il doit retourner SQLSTATE HYC00 (fonctionnalité facultative non implémentée) si une application ODBC 2.x tente de définir SQL_USE_BOOKMARKS sur SQL_UB_ON.
Pour un pilote ODBC 3.x , le Gestionnaire de pilotes ne vérifie plus si Option se trouve entre SQL_STMT_OPT_MIN et SQL_STMT_OPT_MAX, ou s’il est supérieur à SQL_CONNECT_OPT_DRVR_START. Le pilote doit vérifier cela.