type ODBC SQL pour les paramètres table
La prise en charge des paramètres de table est fournie par un nouveau type SQL ODBC, SQL_SS_TABLE.
Remarques
SQL_SS_TABLE ne peut pas être converti en un autre type de données ODBC ou SQL Server.
Si SQL_SS_TABLE est utilisé comme type de données C dans le paramètre ValueType de SQLBindParameter ou qu'une tentative a lieu de définir SQL_DESC_TYPE dans un enregistrement APD de l'application sur SQL_SS_TABLE, SQL_ERROR est retourné et un enregistrement de diagnostic est généré avec SQLSTATE=HY003, « Type de tampon d'application non valide ».
Si SQL_DESC_TYPE est défini avec la valeur SQL_SS_TABLE dans un enregistrement IPD et que l'enregistrement APD correspondant n'est pas SQL_C_DEFAULT, SQL_ERROR est retourné et un enregistrement de diagnostic est généré avec SQLSTATE=HY003, « Type de tampon d'application non valide ». Cela peut se produire avec le ParameterType d'un SQLSetDescField,SQLSetDescRec ou SQLBindParameter.
Si le paramètre TargetType est SQL_SS_TABLE lors de l'appel de SQLGetData, SQL_ERROR est retourné et un enregistrement de diagnostic est généré avec SQLSTATE=HY003, « Type de tampon d'application non valide ».
Une colonne de paramètre table ne peut pas être liée comme type SQL_SS_TABLE. Si SQLBindParameter est appelé avec ParameterType défini avec la valeur SQL_SS_TABLE, SQL_ERROR est retourné et un enregistrement de diagnostic est généré avec SQLSTATE=HY004, « Type de données SQL non valide ». Cela peut également se produire avec SQLSetDescField et SQLSetDescRec.
Les valeurs des colonne de paramètre table ont les mêmes options de conversion de données que les paramètres et les colonnes de résultat.
Un paramètre table ne peut être un paramètre d'entrée que dans SQL Server 2008. Si une tentative a lieu de définir SQL_DESC_PARAMETER_TYPE avec une valeur autre que SQL_PARAM_INPUT via SQLBindParameter ou SQLSetDescField, SQL_ERROR est retourné et un enregistrement de diagnostic est ajouté à l'instruction avec SQLSTATE=HY105 et le message « Type de paramètre non valide ».
Les colonnes de paramètre table ne peuvent pas utiliser SQL_DEFAULT_PARAM dans StrLen_or_IndPtr, parce que les valeurs par défaut par ligne ne sont pas prises en charge avec les paramètres table. À la place, une application peut définir l'attribut de colonne SQL_CA_SS_COL_HAS_DEFAULT_VALUE avec la valeur 1. Cela signifie que la colonne aura des valeurs par défaut pour toutes les lignes. Si StrLen_or_IndPtr est défini avec la valeur SQL_DEFAULT_PARAM, SQLExecute ou SQLExecDirect retourne SQL_ERROR et un enregistrement de diagnostic est ajouté à l'instruction avec SQLSTATE=HY090 et le message « Longueur de chaîne ou de mémoire tampon non valide ».