Condividi tramite


Tipo SQL ODBC per parametri con valori di tabella

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

Osservazioni

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

Se SQL_SS_TABLE viene utilizzato come tipo di dati C nel parametro ValueType di SQLBindParameter o se viene effettuato un tentativo di impostare SQL_DESC_TYPE in un record del descrittore del parametro dell'applicazione (APD, Application Parameter Descriptor) in SQL_SS_TABLE, viene restituito SQL_ERROR e viene generato un record di diagnostica con SQLSTATE=HY003, "Tipo di buffer dall'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". Questa situazione può verificarsi con il parametro ParameterType di un oggetto SQLSetDescField, SQLSetDescRec o SQLBindParameter.

Se quando si chiama SQLGetData il parametro TargetType è SQL_SS_TABLE, viene restituito SQL_ERROR e viene generato un record di diagnostica con SQLSTATE=HY003, "Tipo di buffer dall'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, viene restituito SQL_ERROR e viene generato un record di diagnostica con SQLSTATE=HY004, "Tipo di dati SQL non valido". Questa situazione 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. Se viene effettuato il tentativo di impostare SQL_DESC_PARAMETER_TYPE su un valore diverso da SQL_PARAM_INPUT tramite SQLBindParameter o SQLSetDescField, viene restituito SQL_ERROR e un record di diagnostica viene aggiunto all'istruzione con SQLSTATE=HY105 e il messaggio "Tipo di parametro non valido".

Le colonne di parametri con valori di tabella non possono utilizzare SQL_DEFAULT_PARAM in StrLen_or_IndPtr, in quanto con i parametri con valori di tabella i valori predefiniti per riga non sono supportati. È 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 un record di diagnostica verrà aggiunto all'istruzione con SQLSTATE=HY090 e il messaggio "Lunghezza di stringa o di buffer non valida".