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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de