DB2 - Como executar uma consulta de seleção ad hoc com um parâmetro na ferramenta GUI do IBM System i Access para Windows

StackOverflow https://stackoverflow.com/questions/2336820

Pergunta

Gostaria de executar algumas instruções de seleção ad hoc na ferramenta IBM System I Navigator para DB2 usando uma variável que declaro.

Por exemplo, no mundo do SQL Server eu faria isso facilmente na janela de consulta do SQL Server Management Studio assim:

DECLARE @VariableName varchar(50);
SET @VariableName = 'blah blah';

select * from TableName where Column = @VariableName;

Como posso fazer algo semelhante na ferramenta IBM System I Navigator?

Foi útil?

Solução

Encontrei este post enquanto procurava pela mesma pergunta.Meu colega de trabalho forneceu a resposta.Na verdade, é possível declarar variáveis ​​em uma instrução SQL ad hoc no Navigator.É assim que se faz:

CREATE OR REPLACE VARIABLE variableName VARCHAR(50);
SET variableName = 'blah';
SELECT * FROM table WHERE column = variableName;
DROP VARIABLE variableName;

Se você não descartar o nome da variável, ela permanecerá até quem sabe quando...

Outras dicas

No momento, estamos trabalhando na mesma questão no trabalho. Infelizmente, concluímos que isso não é possível. Eu concordo, seria ótimo, mas simplesmente não funciona dessa maneira. O inavigador não suporta definir ou definir. Você pode fazer isso no SQL incorporado, mas isso não é SQL incorporado. Mesmo se você criar um documento separado (xxx.sql), precisará abrir este documento para executar o script O que o torna um script interativo (ou seja, a seção Declare não é permitida).

Como alternativa, na tela/script SQL que você pode usar CL:. Qualquer coisa após este prefixo ser executada como comando cl. Você pode manipular suas tabelas (por exemplo, RNMF) dessa maneira.

Como segunda alternativa, o iSeries suporta scripts REXX (padrão instalado com o sistema operacional). O Rexx é um bom idioma de script dinâmico e suporta SQL incorporado. Eu já fiz isso muitas vezes e funciona muito bem. Eu até criei scripts para o nosso ambiente de produção.

Basta criar um script 'padrão' com um exemplo de preparação e cursor e copiar à vontade. Com esse script, você pode brincar. Consulte o manual rexx para obter a sintaxe correta do EXEC-SQL. Além disso, você possui stdin e stdout, mas pode usar 'ovrdbf' para apontar para uma tabela de banco de dados (arquivo físico). Informe -me se você precisar de um exemplo de script rexx.

Observe que a "programação incorporada SQL" manual possui exemplos REXX.

Aqui estão algumas outras alternativas.

Ferramenta de transferência de dados - você pode executar a ferramenta de transferência de dados do ISERIES na linha de comando (RTOPCB). Primeiro, execute a versão da GUI e crie um arquivo de definição. Se você editar este arquivo com um editor de texto, verá que este é apenas um arquivo ini à moda antiga e poderá encontrar facilmente a linha com a consulta nele. A partir daí, você pode escrever um arquivo em lote ou pré-processar o arquivo de texto para permitir que você manipule a consulta antes de enviá-lo para a ferramenta de consulta.

QSHELL - Se você puder fazer logon nos ISERIES interativamente, poderá achar o ambiente Qshell mais familiar que Cl ou Rexx (embora o Rexx seja divertido). Qshell é um ambiente POSIX completo em execução no ISERIES. Use o comando strqsh para iniciar Qshell. Você pode ter KSH ou CSH como uma concha. Dentro do Qshell, existe um comando chamado "DB2" que envia consultas. Então, você deve poder fazer algo assim dentro do Qshell:

system> VariableName = 'blah blah'
system> db2 "select * from TableName where Column = \'$VariableName\'"

Você pode ter que mexer com as cotações para que o KSH passe por elas corretamente.

Além disso, dentro do Qshell, você deve ter uma instalação completa do Perl que permitirá que você use o DBI para obter dados.

Algumas outras maneiras de interagir com dados sobre o IRERIES: consulta do cliente com Python via ODBC; consulta do cliente com Jython via JDBC; Instale o Jython diretamente no ISERIES e, em seguida, consulte via JDBC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top