Função PASSTHRU

A função PASSTHRU avalia uma expressão e executa a cadeia de caracteres resultante como uma instrução de banco de dados, retornando um conjunto de resultados.

A função PASSTHRU é semelhante à instrução PASSTHRU, que é descrita em Instrução PASSTHRU.

SYNTAX
Notas:
  1. A metade inferior do diagrama de sintaxe principal descreve a sintaxe mantida para retrocompatibilidade.

Utilização

O uso principal da função PASSTHRU é emitir SELECTs complexos, não suportados atualmente pelo intermediários, para os bancos de dados. (Exemplos de SELECTs complexos não suportados atualmente pelo intermediário são aqueles que contêm cláusulas GROUP BY ou HAVING.)

A primeira expressão é avaliada e a cadeia de caracteres resultante é transmitida para o banco de dados apontado por DatabaseReference (na cláusula TO) para execução. Se a cláusula TO não for especificada, será utilizado o banco de dados apontado pelo atributo data source do nó.

Utilize pontos de interrogação (?) na cadeia de banco de dados para indicar parâmetros. Os valores de parâmetros são fornecidos pela cláusula VALUES.

Se a cláusula VALUES for especificada, suas expressões serão avaliadas e transmitidas ao banco de dados como parâmetros; (ou seja, os pontos de interrogação serão substituídos pelos respectivos valores na instrução de banco de dados).

Se houver apenas uma expressão VALUE, o resultado poderá ser ou não uma lista. Se for uma lista, os pontos de interrogação serão substituídos pelos valores escalares da lista, seqüencialmente. Se não for uma lista, o ponto de interrogação (único) será substituído pelo valor escalar único na instrução de banco de dados. Se houver mais de uma expressão VALUE, nenhuma das expressões deverá ser avaliada para uma lista. Os pontos de interrogação serão substituídos pelos respectivos valores escalares, seqüencialmente.

Como a instrução de banco de dados é construída pelo programa do usuário, não há nenhuma necessidade absoluta de utilizar os marcadores de parâmetros (ou seja, os pontos de interrogação) ou a cláusula VALUES, porque toda a instrução de banco de dados poderia ser fornecida, como uma cadeia de literal, pelo programa. Entretanto, utilize marcadores de parâmetros sempre que possível, porque isso reduz o número de diferentes instruções que precisam ser preparadas e armazenadas no banco de dados e no intermediário.

Referência ao Banco de Dados

Uma referência ao banco de dados é um caso especial das referências de campos utilizadas para referir-se às árvores de mensagens. Consiste na palavra "Database" seguida por um nome de origem de dados (ou seja, o nome de uma instância de banco de dados).

Você pode especificar o nome da origem de dados diretamente ou por uma expressão entre chaves ({...}). Um nome de origem de dados especificado diretamente está sujeito à substituição de nome. Ou seja, se o nome utilizado tiver sido declarado como um nome conhecido, o valor do nome declarado será utilizado no lugar do próprio nome (consulte Instrução DECLARE).

Tratamento de erros

É possível que ocorram erros durante as operações PASSTHRU. Por exemplo, o banco de dados pode não estar operacional ou a instrução pode ser inválida. Nestes casos, uma exceção é emitida (a menos que o nó tenha sua propriedade throw exception on database error configurada como FALSE). Essas exceções configuram os valores apropriados de código SQL, estado, erro nativo e texto de erro e podem ser tratadas por rotinas de tratamento de erro (consulte a instrução DECLARE HANDLER).

Para obter informações adicionais sobre como manipular erros do banco de dados, consulte Capturando o Estado do Banco de Dados.

Exemplo

O exemplo a seguir desempenha um SELECT na tabela "Table1" no esquema "Schema1" do banco de dados DSN1, transmitindo dois parâmetros para a cláusula WHERE e solicitando que o conjunto de resultados padrão seja colocado em ordem crescente de nomes. O conjunto de resultados é designado à pasta SelectResult:
SET OutputRoot.XML.Data.SelectResult.Row[] =
  PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name =
           ? ORDER BY Name'
   TO Database.DSN1
   VALUES ('Name1', 'Name4'));
Conceitos relacionados
Visão Geral do ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Instrução PASSTHRU
Funções Diversas ESQL
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05890_