Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostare il valore di un parametro, l'applicazione imposta semplicemente il valore della variabile associata al parametro . Non è importante quando questo valore viene impostato, purché sia impostato prima dell'esecuzione dell'istruzione. L'applicazione può impostare il valore prima o dopo l'associazione della variabile e può modificare il valore tutte le volte desiderato. Quando l'istruzione viene eseguita, il driver recupera semplicemente il valore corrente della variabile. Ciò è particolarmente utile quando un'istruzione preparata viene eseguita più volte; L'applicazione imposta nuovi valori per alcune o tutte le variabili ogni volta che viene eseguita l'istruzione. Per un esempio, vedere Esecuzione preparata, più indietro in questa sezione.
Se nella chiamata a SQLBindParameter è stato associato un buffer di lunghezza/indicatore, deve essere impostato su uno dei valori seguenti prima dell'esecuzione dell'istruzione:
Lunghezza dei byte dei dati nella variabile associata. Il driver controlla questa lunghezza solo se la variabile è di tipo carattere o binario (ValueType è SQL_C_CHAR o SQL_C_BINARY).
SQL_NTS. I dati sono una stringa con terminazione Null.
SQL_NULL_DATA. Il valore dei dati è NULL e il driver ignora il valore della variabile associata.
SQL_DATA_AT_EXEC o il risultato della macro SQL_LEN_DATA_AT_EXEC. Il valore del parametro deve essere inviato con SQLPutData. Per altre informazioni, vedere Invio di dati lunghi più avanti in questa sezione.
La tabella seguente illustra i valori della variabile associata e il buffer di lunghezza/indicatore impostati dall'applicazione per un'ampia gamma di valori di parametro.
| Parametro value |
Parametro (SQL) tipo di dati |
Variabile (C) tipo di dati |
Valore in limite variable |
Valore in lunghezza/indicatore buffer[d] |
|---|---|---|---|---|
| "ABC" | SQL_CHAR | SQL_C_CHAR | ABC\0[a] | SQL_NTS o 3 |
| 10 | SQL_INTEGER | SQL_C_SLONG | 10 | -- |
| 10 | SQL_INTEGER | SQL_C_CHAR | 10\0[a] | SQL_NTS o 2 |
| 13:00 | SQL_TYPE_TIME | SQL_C_TYPE_TIME | 13.0.0[b] | -- |
| 13:00 | SQL_TYPE_TIME | SQL_C_CHAR | {t '13:00:00'}\0[a], [c] | SQL_NTS o 14 |
| NULLO | SQL_SMALLINT | SQL_C_SSHORT | -- | SQL_NULL_DATA |
[a] "\0" rappresenta un carattere di terminazione Null. Il carattere di terminazione Null è necessario solo se il valore nel buffer di lunghezza/indicatore è SQL_NTS.
[b] I numeri in questo elenco sono i numeri archiviati nei campi della struttura TIME_STRUCT.
[c] La stringa usa la clausola odbc date escape. Per altre informazioni, vedere Valori letterali di data, ora e timestamp.
[d] I driver devono sempre controllare questo valore per verificare se si tratta di un valore speciale, ad esempio SQL_NULL_DATA.
Le operazioni eseguite da un driver con un valore di parametro in fase di esecuzione dipendono dal driver. Se necessario, il driver converte il valore dal tipo di dati C e dalla lunghezza in byte della variabile associata al tipo di dati SQL, alla precisione e alla scala del parametro. Nella maggior parte dei casi, il driver invia quindi il valore all'origine dati. In alcuni casi, formatta il valore come testo e lo inserisce nell'istruzione SQL prima di inviare l'istruzione all'origine dati.