Função SQLSetDescRec
de conformidade
Versão introduzida: Conformidade de padrões do ODBC 3.0: ISO 92
de Resumo do
A função SQLSetDescRec define vários campos de descritor que afetam o tipo de dados e o buffer associados a uma coluna ou dados de parâmetro.
Sintaxe
SQLRETURN SQLSetDescRec(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT Type,
SQLSMALLINT SubType,
SQLLEN Length,
SQLSMALLINT Precision,
SQLSMALLINT Scale,
SQLPOINTER DataPtr,
SQLLEN * StringLengthPtr,
SQLLEN * IndicatorPtr);
Argumentos
[Entrada] Identificador de descritor. Isso não deve ser um identificador IRD.
[Entrada] Indica o registro do descritor que contém os campos a serem definidos. Os registros do descritor são numerados a partir de 0, com o número de registro 0 sendo o registro de indicador. Esse argumento deve ser igual ou maior que 0. Se RecNumber for maior que o valor de SQL_DESC_COUNT, SQL_DESC_COUNTis alterado para o valor de RecNumber.
tipo
[Entrada] O valor para o qual definir o campo SQL_DESC_TYPE para o registro do descritor.
subtipo
[Entrada] Para registros cujo tipo é SQL_DATETIME ou SQL_INTERVAL, esse é o valor para o qual definir o campo SQL_DESC_DATETIME_INTERVAL_CODE.
de comprimento
[Entrada] O valor para o qual definir o campo SQL_DESC_OCTET_LENGTH para o registro do descritor.
de precisão
[Entrada] O valor para o qual definir o campo SQL_DESC_PRECISION para o registro do descritor.
de escala
[Entrada] O valor para o qual definir o campo SQL_DESC_SCALE para o registro do descritor.
[Entrada ou saída adiada] O valor para o qual definir o campo SQL_DESC_DATA_PTR para o registro do descritor.
dataptr pode ser definido como um ponteiro nulo.
O argumento DataPtr pode ser definido como um ponteiro nulo para definir o campo SQL_DESC_DATA_PTR como um ponteiro nulo. Se o identificador no argumento DescriptorHandle estiver associado a um ARD, isso desvincula a coluna.
StringLengthPtr
[Entrada ou saída adiada] O valor para o qual definir o campo SQL_DESC_OCTET_LENGTH_PTR para o registro do descritor.
StringLengthPtr pode ser definido como um ponteiro nulo para definir o campo SQL_DESC_OCTET_LENGTH_PTR como um ponteiro nulo.
[Entrada ou saída adiada] O valor para o qual definir o campo SQL_DESC_INDICATOR_PTR para o registro do descritor.
IndicatorPtr pode ser definido como um ponteiro nulo para definir o campo SQL_DESC_INDICATOR_PTR como um ponteiro nulo.
Retorna
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR ou SQL_INVALID_HANDLE.
Diagnostics
Quando
Comentários
Um aplicativo pode chamar SQLSetDescRec para definir os seguintes campos para uma única coluna ou parâmetro:
SQL_DESC_TYPE
SQL_DESC_DATETIME_INTERVAL_CODE (para registros cujo tipo é SQL_DATETIME ou SQL_INTERVAL)
SQL_DESC_OCTET_LENGTH
SQL_DESC_PRECISION
SQL_DESC_SCALE
SQL_DESC_DATA_PTR
SQL_DESC_OCTET_LENGTH_PTR
SQL_DESC_INDICATOR_PTR
Nota
Se uma chamada para SQLSetDescRec falhar, o conteúdo do registro do descritor identificado pelo argumento RecNumber será indefinido.
Ao associar uma coluna ou parâmetro, SQLSetDescRec permite alterar vários campos que afetam a associação sem chamar SQLBindCol ou SQLBindParameter ou fazer várias chamadas para SQLSetDescField. SQLSetDescRec pode definir campos em um descritor não associado a uma instrução no momento. Observe que SQLBindParameter define mais campos do que SQLSetDescRec, pode definir campos em uma APD e um IPD em uma chamada e não requer um identificador de descritor.
Nota
O atributo de instrução SQL_ATTR_USE_BOOKMARKS sempre deve ser definido antes de chamar SQLSetDescRec com um argumento RecNumber de 0 para definir campos de indicador. Embora isso não seja obrigatório, é altamente recomendável.
Verificações de consistência
Uma verificação de consistência é executada pelo driver automaticamente sempre que um aplicativo define o campo SQL_DESC_DATA_PTR de um APD, ARD ou IPD. Se qualquer um dos campos for inconsistente com outros campos, SQLSetDescRec retornará SQLSTATE HY021 (informações de descritor inconsistentes).
Sempre que um aplicativo define o campo SQL_DESC_DATA_PTR de um APD, ARD ou IPD, o driver verifica se o valor do campo SQL_DESC_TYPE e os valores aplicáveis a esse campo SQL_DESC_TYPE são válidos e consistentes. Essa verificação sempre é executada quando sqlBindParameter ou SQLBindCol é chamado ou quando SQLSetDescRec é chamado para uma APD, ARD ou IPD. Essa verificação de consistência inclui as seguintes verificações nos campos do descritor:
O campo SQL_DESC_TYPE deve ser um dos tipos ODBC C ou SQL válidos ou um tipo SQL específico do driver. O campo SQL_DESC_CONCISE_TYPE deve ser um dos tipos ODBC C ou SQL válidos ou um tipo C ou SQL específico do driver, incluindo os tipos concisos de datetime e intervalo.
Se o campo de registro SQL_DESC_TYPE for SQL_DATETIME ou SQL_INTERVAL, o campo SQL_DESC_DATETIME_INTERVAL_CODE deverá ser um dos códigos de intervalo ou datetime válidos. (Consulte a descrição do campo SQL_DESC_DATETIME_INTERVAL_CODE em SQLSetDescField.)
Se o campo SQL_DESC_TYPE indicar um tipo numérico, os campos SQL_DESC_PRECISION e SQL_DESC_SCALE serão verificados como válidos.
Se o campo SQL_DESC_CONCISE_TYPE for um tipo de dados de tempo ou carimbo de data/hora, um tipo de intervalo com um componente de segundos ou um dos tipos de dados de intervalo com um componente de tempo, o campo SQL_DESC_PRECISION será verificado como sendo uma precisão de segundos válida.
Se o SQL_DESC_CONCISE_TYPE for um tipo de dados de intervalo, o campo SQL_DESC_DATETIME_INTERVAL_PRECISION será verificado como sendo um valor de precisão à esquerda de intervalo válido.
O campo SQL_DESC_DATA_PTR de um IPD normalmente não está definido; no entanto, um aplicativo pode fazer isso para forçar uma verificação de consistência de campos IPD. Não é possível executar uma verificação de consistência em um IRD. O valor para o qual o campo SQL_DESC_DATA_PTR do IPD não está realmente armazenado e não pode ser recuperado por uma chamada para SQLGetDescField ou SQLGetDescRec; a configuração é feita apenas para forçar a verificação de consistência.
Funções relacionadas
Para obter informações sobre | Ver |
---|---|
Associar uma coluna | de função SQLBindCol |
Associar um parâmetro | função SQLBindParameter |
Obtendo um único campo de descritor | de função SQLGetDescField |
Obtendo vários campos de descritor | função SQLGetDescRec |
Definindo campos de descritor único | função SQLSetDescField |