Compartilhar via


Campos adiados

Os valores dos campos adiados não são usados quando são definidos, mas o driver salva os endereços das variáveis para um efeito adiado. Para um descritor de parâmetro de aplicativo, o driver usa o conteúdo das variáveis no momento da chamada para SQLExecDirect ou SQLExecute. Para um descritor de linha de aplicativo, o driver usa o conteúdo das variáveis no momento da busca.

São campos diferidos:

  • Os campos SQL_DESC_DATA_PTR e SQL_DESC_INDICATOR_PTR de um registro de descritor.

  • O campo SQL_DESC_OCTET_LENGTH_PTR de um registro de descritor de aplicativo.

  • No caso de uma busca de várias linhas, os campos SQL_DESC_ARRAY_STATUS_PTR e SQL_DESC_ROWS_PROCESSED_PTR de um cabeçalho de descritor.

Quando um descritor é alocado, os campos adiados de cada registro de descritor inicialmente têm um valor nulo. O significado dos atributos é o seguinte:

  • Se SQL_DESC_ARRAY_STATUS_PTR tiver um valor nulo, uma busca de várias linhas falhará ao retornar esse componente das informações de diagnóstico por linha.

  • Se SQL_DESC_DATA_PTR tiver um valor nulo, o registro será desacoplado.

  • Se o campo SQL_DESC_OCTET_LENGTH_PTR de um ARD tiver um valor nulo, o driver não retornará informações de comprimento para essa coluna.

  • Se o campo SQL_DESC_OCTET_LENGTH_PTR de um APD tiver um valor nulo e o parâmetro for uma cadeia de caracteres, o driver assumirá que a cadeia de caracteres é terminada em nulo. Para parâmetros dinâmicos de saída, um valor nulo nesse campo impede que o driver retorne informações de comprimento. (Se o campo SQL_DESC_TYPE não indicar um parâmetro de cadeia de caracteres, o campo SQL_DESC_OCTET_LENGTH_PTR será ignorado.)

O aplicativo não deve desalocar ou descartar variáveis usadas para campos adiados entre o momento em que os associa aos campos e o momento em que o driver os lê ou grava.