Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para definir o valor de um parâmetro, o aplicativo simplesmente define o valor da variável associada ao parâmetro. Não é importante quando esse valor é definido, desde que seja definido antes da execução da instrução. O aplicativo pode definir o valor antes ou depois de associar 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. Isso é particularmente útil quando uma instrução preparada é executada mais de uma vez; o aplicativo define novos valores para algumas ou todas as variáveis sempre que a instrução é executada. Para obter um exemplo disso, consulte Execução Preparada, anteriormente nesta seção.
Se um buffer de comprimento/indicador foi associado na chamada para SQLBindParameter, ele deve ser definido como um dos seguintes valores antes que a instrução seja executada:
O comprimento de bytes dos dados na variável associada. O driver verifica esse comprimento somente se a variável for de caractere ou binário (ValueType é SQL_C_CHAR ou SQL_C_BINARY).
SQL_NTS. Os dados são uma cadeia de caracteres terminada em nulo.
SQL_NULL_DATA. O valor dos dados é NULL e o driver ignora o valor da variável associada.
SQL_DATA_AT_EXEC ou o resultado da macro SQL_LEN_DATA_AT_EXEC. O valor do parâmetro deve ser enviado com SQLPutData. Para obter mais informações, consulte Envio de Dados Longos, mais adiante nesta seção.
A tabela a seguir mostra os valores da variável associada e o buffer de comprimento/indicador que o aplicativo define para uma variedade de valores de parâmetro.
| Parâmetro value |
Parâmetro (SQL) tipo de dados |
Variável (C) tipo de dados |
Valor em limitado 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 |
| 13h. | SQL_TYPE_TIME | SQL_C_TYPE_TIME | 13,0,0[b] | -- |
| 13h00. | 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 caractere de terminação nula. O caractere de terminação nula será necessário somente 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 de TIME_STRUCT.
[c] A cadeia de caracteres usa a cláusula de escape de data ODBC. Para obter mais informações, consulte Literais de Data, Hora e Timestamp.
[d] Os drivers sempre devem verificar esse valor para ver se ele é um valor especial, como SQL_NULL_DATA.
O que um driver faz com um valor de parâmetro no tempo de execução depende do driver. Se necessário, o driver converte o valor do tipo de dados C e o comprimento do byte da variável associada para o tipo de dados SQL, a precisão e a escala do parâmetro. Na maioria dos casos, o driver envia o valor para a fonte de dados. Em alguns casos, ele formata o valor como texto e o insere na instrução SQL antes de enviar a instrução para a fonte de dados.