Instrução PASSTHRU

A instrução PASSTHRU avalia uma expressão e executa a cadeia de caracteres resultante como uma instrução de banco de dados.

SYNTAX
Notas:
  1. A metade inferior do diagrama de sintaxe principal (a segunda das duas maneiras de codificar a Expression a ser transmitida para PASSTHRU) descreve a sintaxe mantida para retrocompatibilidade.

Utilização

O uso principal da instrução PASSTHRU é emitir comandos administrativos para bancos de dados (por exemplo, para criar uma tabela).
Nota: Não utilize PASSTHRU para chamar procedimentos armazenados, em vez disso, utilize a instrução CALL. Isso deve-se às limitações impostas por PASSTHRU (você não pode utilizar parâmetros de saída, por exemplo).

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.

Exemplos

O exemplo a seguir cria a tabela "Customers" no esquema "Shop" no banco de dados DSN1:
PASSTHRU 'CREATE TABLE Shop.Customers (
  CustomerNumber INTEGER,
  FirstName      VARCHAR(256),
  LastName       VARCHAR(256),
  Street         VARCHAR(256),
  City           VARCHAR(256),
  Country        VARCHAR(256)
)' TO Database.DSN1;
Se, como no último exemplo, a instrução ESQL for especificada como um literal de cadeia, você deverá colocá-la entre aspas simples. Entretanto, se for especificada como uma variável, omita as aspas. Por exemplo:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XML.Data[] = PASSTHRU(myVar);
O exemplo a seguir "elimina" (ou seja, exclui) a tabela "Customers" no esquema "Shop" no banco de dados DSN1:
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1; 
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05100_