Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para definir o valor de um parâmetro, a aplicação simplesmente define o valor da variável ligada ao parâmetro. Não é importante quando este valor está definido, desde que seja definido antes da instrução ser executada. A aplicação pode definir o valor antes ou depois de ligar a variável, e pode alterar o valor quantas vezes quiser. Quando a instrução é executada, o driver simplesmente recupera o valor atual da variável. Isto é particularmente útil quando uma declaração preparada é executada mais do que uma vez; A aplicação define novos valores para algumas ou todas as variáveis cada vez que a instrução é executada. Para um exemplo disto, veja Execução Preparada, anteriormente nesta secção.
Se um buffer de comprimento/indicador foi atribuído na chamada ao SQLBindParameter, deve ser definido para um dos seguintes valores antes de a instrução ser executada:
O comprimento do byte dos dados na variável limitada. O driver verifica este comprimento apenas se a variável for de carater ou binária (ValueType for SQL_C_CHAR ou SQL_C_BINARY).
SQL_NTS. Os dados são uma cadeia terminada por nulo.
SQL_NULL_DATA. O valor dos dados é NULL, e o driver ignora o valor da variável limitada.
SQL_DATA_AT_EXEC ou o resultado do SQL_LEN_DATA_AT_EXEC macro. O valor do parâmetro deve ser enviado com SQLPutData. Para mais informações, veja Enviar Dados Longos, mais adiante nesta secção.
A tabela seguinte mostra os valores da variável limitada e do buffer de comprimento/indicador que a aplicação define para uma variedade de valores de parâmetros.
| Parâmetro valor |
Parâmetro (SQL) tipo de dados |
Variável (C) tipo de dados |
Valor em dependente variável |
Valor em Comprimento/Indicador buffer[d] |
|---|---|---|---|---|
| "ABC" | SQL_CHAR | SQL_C_CHAR | ABC\0[a] | SQL_NTS ou 3 |
| 10 | SQL_INTEGER | SQL_C_SLONG | 10 | -- |
| 10 | SQL_INTEGER | SQL_C_CHAR | 10\0[a] | SQL_NTS ou 2 |
| 13 h | 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 ou 14 |
| NULO | SQL_SMALLINT | SQL_C_SSHORT | -- | SQL_NULL_DATA |
[a] "\0" representa um carácter de terminação nul. O carácter de terminação nula é necessário apenas se o valor no buffer de comprimento/indicador for SQL_NTS.
[b] Os números nesta lista são os números armazenados nos campos da estrutura TIME_STRUCT.
[c] A cadeia usa a cláusula de escape de data ODBC. Para mais informações, consulte Literais de Data, Hora e Timestamp.
[d] Os condutores devem sempre verificar este valor para verificar se é um valor especial, como SQL_NULL_DATA.
O que um driver faz com um valor de parâmetro no momento de execução depende do driver. Se necessário, o driver converte o valor do tipo de dados C e do comprimento em bytes da variável associada para o tipo de dados SQL, precisão e escala do parâmetro. Na maioria dos casos, o driver envia então o valor para a fonte de dados. Em alguns casos, formata o valor como texto e insere-o na instrução SQL antes de a enviar para a fonte de dados.