Share via


Tipo SQL ODBC per parametri con valori di tabella

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure Azure SynapseAnalytics AnalyticsPlatform System (PDW)

Il supporto per i parametri con valori di tabella viene fornito da un nuovo tipo ODBC SQL, SQL_SS_TABLE.

Commenti

SQL_SS_TABLE non può essere convertito in qualsiasi altro tipo di dati ODBC o SQL Server.

Se SQL_SS_TABLE viene usato come tipo di dati C nel parametro ValueType di SQLBindParameter o viene eseguito un tentativo di impostare SQL_DESC_TYPE in un record APD (Application ParameterScriptor) per SQL_SS_TABLE, SQL_ERROR viene restituito e viene generato un record di diagnostica con SQLSTATE=HY003, "Tipo di buffer dell'applicazione non valido".

Se SQL_DESC_TYPE è impostato su SQL_SS_TABLE in un record IPD e il record del descrittore del parametro dell'applicazione corrispondente non è SQL_C_DEFAULT, viene restituito SQL_ERROR e viene generato un record di diagnostica con SQLSTATE=HY003, "Tipo di buffer dall'applicazione non valido". Ciò può verificarsi con il parametroType di sqlSetDescField, SQLSetDescRec o SQLBindParameter.

Se il parametro TargetType è SQL_SS_TABLE quando si chiama SQLGetData, SQL_ERROR viene restituito e viene generato un record di diagnostica con SQLSTATE=HY003, "Tipo di buffer dell'applicazione non valido".

Non è possibile associare una colonna di parametri con valori di tabella come tipo SQL_SS_TABLE. Se SQLBindParameter viene chiamato con ParameterType impostato su SQL_SS_TABLE, SQL_ERROR viene restituito e viene generato un record di diagnostica con SQLSTATE=HY004, "Tipo di dati SQL non valido". Ciò può verificarsi anche con SQLSetDescField e SQLSetDescRec.

I valori della colonna di parametri con valori di tabella presentano le stesse opzioni di conversione dei dati dei parametri e delle colonne dei risultati.

Un parametro con valori di tabella può essere solo un parametro di input in SQL Server 2008 (10.0.x) o versioni successive. Se viene eseguito un tentativo di impostare SQL_DESC_PARAMETER_TYPE su un valore diverso da SQL_PARAM_INPUT tramite SQLBindParameter o SQLSetDescField, SQL_ERROR viene restituito e viene aggiunto un record di diagnostica all'istruzione con SQLSTATE=HY105 e il messaggio "Tipo di parametro non valido".

Le colonne dei parametri con valori di tabella non possono usare SQL_DEFAULT_PARAM in StrLen_or_IndPtr, perché i valori predefiniti per riga non sono supportati con parametri con valori di tabella. È invece possibile impostare l'attributo della colonna SQL_CA_SS_COL_HAS_DEFAULT_VALUE su 1. Ciò significa che per tutte le righe della colonna saranno disponibili valori predefiniti. Se StrLen_or_IndPtr è impostato su SQL_DEFAULT_PARAM, SQLExecute o SQLExecDirect restituirà SQL_ERROR e verrà aggiunto un record di diagnostica all'istruzione con SQLSTATE=HY090 e il messaggio "Lunghezza di stringa o buffer non valida".

Vedere anche

Parametri con valori di tabella (ODBC)