Share via


Tipos de descritores

Um descritor é usado para descrever um dos seguintes elementos:

  • Um conjunto de zero ou mais parâmetros. É possível usar um descritor de parâmetro para descrever:

    • O buffer de parâmetros do aplicativo, que contém os argumentos dinâmicos de entrada definidos pelo aplicativo ou os argumentos dinâmicos de saída após a execução de uma instrução SQL CALL.

    • O buffer de parâmetros de implementação. Para argumentos dinâmicos de entrada, isso contém os mesmos argumentos que o buffer de parâmetros do aplicativo após qualquer conversão de dados que o aplicativo possa especificar. Para argumentos dinâmicos de saída, isso contém os argumentos retornados antes de qualquer conversão de dados que o aplicativo possa especificar.

    Para argumentos dinâmicos de entrada, o aplicativo precisa operar em um descritor de parâmetro de aplicativo antes de executar qualquer instrução SQL que contenha marcadores de parâmetro dinâmico. Para argumentos dinâmicos de entrada e saída, o aplicativo pode especificar tipos de dados diferentes daqueles no descritor de parâmetro de implementação para alcançar a conversão de dados.

  • Uma só linha de dados de banco de dados. É possível usar um descritor de linha para descrever:

    • O buffer de linha de implementação, que contém a linha do banco de dados. (Esses buffers contêm conceitualmente dados gravados ou lidos no banco de dados. Porém, a forma armazenada de dados de banco de dados não é especificada. Um banco de dados pode executar conversão adicional nos dados de sua forma no buffer de implementação.)

    • O buffer de linha do aplicativo, que contém a linha de dados conforme apresentado ao aplicativo após qualquer conversão de dados que o aplicativo possa especificar.

    O aplicativo opera no descritor de linha do aplicativo sempre que os dados de coluna do banco de dados devem aparecer em variáveis de aplicativo. Para alcançar a conversão de dados dos dados de coluna, o aplicativo pode especificar tipos de dados diferentes daqueles no descritor de linha de implementação.

A tabela a seguir resume esses tipos.

Tipo de buffer Linhas Parâmetros dinâmicos
Buffer do aplicativo Descritor de linha do aplicativo (ARD) Descritor de parâmetro do aplicativo (APD)
Buffer de implementação Descritor de linha de implementação (IRD) Descritor de parâmetro de implementação (IPD)

Para o parâmetro ou os buffers de linha, se o aplicativo especificar tipos de dados diferentes nos registros correspondentes dos descritores de implementação e aplicativo, o driver executará a conversão de dados quando usar os descritores. Por exemplo, ele pode converter valores numéricos e datetime no formato de cadeia de caracteres. (Para conversões válidas, confira o Apêndice D: Tipos de dados.)

Um descritor pode desempenhar funções diferentes. Instruções diferentes podem compartilhar todos os descritores que o aplicativo aloca explicitamente. Um descritor de linha em uma instrução pode atuar como um descritor de parâmetro em outra instrução.

Sempre se sabe se um determinado descritor é um descritor de aplicativo ou um descritor de implementação, mesmo que ele ainda não tenha sido usado em uma operação de banco de dados. Para descritores que a implementação aloca implicitamente, a implementação registra a linha predefinida relativa ao identificador de instrução. Qualquer descritor que o aplicativo aloca chamando SQLAllocHandle é um descritor de aplicativo.