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.
A execução direta é a forma mais simples de executar uma instrução. Quando a declaração é submetida para execução, a fonte de dados compila-a num plano de acesso e depois executa esse plano de acesso.
A execução direta é comumente usada por aplicações genéricas que criam e executam instruções em tempo de execução. Por exemplo, o seguinte código constrói uma instrução SQL e executa-a uma única vez:
SQLCHAR *SQLStatement;
// Build a SQL statement.
BuildStatement(SQLStatement);
// Execute the statement.
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);
A execução direta funciona melhor para instruções que serão executadas uma única vez. A sua principal desvantagem é que a instrução SQL é analisada sempre que é executada. Além disso, a aplicação não pode recuperar informação sobre o conjunto de resultados criado pela instrução (se existir) até depois da execução da instrução; Isto é possível se a declaração for preparada e executada em dois passos separados.
Para executar uma instrução diretamente, a aplicação executa as seguintes ações:
Define os valores de quaisquer parâmetros. Para mais informações, consulte Parâmetros da Instrução, mais à frente nesta secção.
Chama o SQLExecDirect e passa-lhe uma string contendo a instrução SQL.
Quando o SQLExecDirect é chamado, o driver:
Modifica a instrução SQL para usar a gramática SQL da fonte de dados sem analisar a instrução; isto inclui a substituição das sequências de escape discutidas em Escape Sequences in ODBC. A aplicação pode recuperar a forma modificada de uma instrução SQL chamando SQLNativeSql. As sequências de escape não são substituídas se o atributo da instrução SQL_ATTR_NOSCAN estiver definido.
Recupera os valores atuais dos parâmetros e converte-os conforme necessário. Para mais informações, consulte Parâmetros da Instrução, mais à frente nesta secção.
Envia a instrução e os valores convertidos dos parâmetros para a fonte de dados para execução.
Devolve quaisquer erros. Estas incluem sequenciação ou diagnósticos de estado, como SQLSTATE 24000 (estado do cursor inválido), erros sintáticos como SQLSTATE 42000 (erro de sintaxe ou violação de acesso), e erros semânticos como SQLSTATE 42S02 (Tabela base ou vista não encontradas).