Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma instrução é mais facilmente pensada como uma instrução SQL, como SELECT * FROM Employee. No entanto, uma instrução é mais do que apenas uma instrução SQL – consiste em toda a informação associada a essa instrução SQL, como quaisquer conjuntos de resultados criados pela instrução e parâmetros usados na execução da mesma instrução. Uma instrução nem sequer precisa de ter uma instrução SQL definida pela aplicação. Por exemplo, quando uma função de catálogo como o SQLTables é executada numa instrução, executa uma instrução SQL pré-definida que devolve uma lista de nomes de tabelas.
Cada instrução é identificada por um identificador de instrução. Uma instrução está associada a uma única conexão, e podem existir múltiplas instruções nessa conexão. Alguns condutores limitam o número de declarações ativas que suportam; a opção SQL_MAX_CONCURRENT_ACTIVITIES no SQLGetInfo especifica quantas instruções ativas um driver suporta numa única ligação. Uma instrução é definida como ativa se tiver resultados pendentes, onde os resultados são ou um conjunto de resultados ou a contagem de linhas afetadas por uma instrução INSERT,UPDATE ou DELETE , ou dados estão a ser enviados com múltiplas chamadas para SQLPutData.
Dentro de um trecho de código que implementa ODBC (o Gestor de Drivers ou um driver), o identificador da instrução identifica uma estrutura que contém informação da instrução, tais como:
O estado da declaração
Os diagnósticos atuais ao nível da declaração
Os endereços das variáveis de aplicação ligados aos parâmetros da instrução e às colunas do conjunto de resultados
As definições atuais de cada atributo de instrução
Os statement handles são usados na maioria das funções ODBC. Notavelmente, são usados nas funções para associar parâmetros e colunas de conjunto de resultados (SQLBindParameter e SQLBindCol), preparar e executar instruções (SQLPrepare, SQLExecute e SQLExecDirect), recuperar metadados (SQLColAttribute e SQLDescribeCol), obter resultados (SQLFetch) e recuperar diagnósticos (SQLGetDiagField e SQLGetDiagRec). Também são usados em funções de catálogo (SQLColumns, SQLTables, etc.) e em várias outras funções.
Os handles das declarações são alocados com SQLAllocHandle e libertados com SQLFreeHandle.