DB2 - Come eseguire una query di selezione ad hoc con un parametro di IBM System i Access per Windows strumento GUI

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

Domanda

Vorrei fare funzionare alcune dichiarazioni selezionate ad hoc nello strumento di IBM System i Navigator per DB2 utilizzando una variabile che dichiaro.

Ad esempio, nel mondo di SQL Server avrei facilmente fare questo nella finestra di query SQL Server Management Studio in questo modo:

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

select * from TableName where Column = @VariableName;

Come posso fare qualcosa di simile nello strumento di IBM System i Navigator?

È stato utile?

Soluzione

Mi sono imbattuto in questo post durante la ricerca per la stessa domanda. Il mio collega ha fornito la risposta. E 'infatti possibile dichiarare le variabili in un apposito comunicato annuncio SQL in Navigator. Questo è come è fatto:

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

Se non far cadere il nome della variabile che si bloccherà intorno fino chissà quando ...

Altri suggerimenti

Al momento, stiamo lavorando sulla stessa questione sul posto di lavoro. Unfortunaly, abbiamo concluso che questo non è possibile. Sono d'accordo, sarebbe bello, ma semplicemente non funziona in questo modo. iNavigator non supporta SET o definire. È possibile farlo in SQL incorporato, ma questo non è incorporato SQL. Anche se si crea un documento separato (xxx.sql), quindi necessario aprire il documento per eseguire lo script ciò che lo rende uno script interattivo (cioè, dichiarare SEZIONE non è consentito).

In alternativa, nella schermata / script SQL è possibile utilizzare CL: . Dopo di ciò prefisso viene eseguito come comando CL. Si può manipolare le tabelle (ad esempio RNMF) in questo modo.

Come seconda alternativa, l'iSeries supporta gli script Rexx (di default installato con il sistema operativo). Rexx è buono linguaggio di script dinamici e supporta SQL incorporato. Ho fatto che un sacco di volte e funziona benissimo. Ho anche creato gli script per il nostro ambiente di produzione.

Basta creare uno script 'default' con un esempio preparare e dichiarazione CURSOR e copiare a piacimento. Con questo script è possibile giocare. Vedere il manuale Rexx per la sintassi corretta del exec-SQL. Inoltre, si ha STDIN e STDOUT ma è possibile utilizzare 'OVRDBF' a punto una tabella di database (file fisico). Fatemi sapere se avete bisogno di un esempio di script Rexx.

Si noti che il manuale "programmazione embedded SQL" non ha esempi Rexx.

Qui ci sono un paio di altre alternative.

Trasferimento dati Tool - È possibile eseguire il trasferimento dei dati strumento di iSeries dalla riga di comando (RTOPCB). In primo luogo, eseguire la versione GUI e creare un file di definizione. Se si modifica questo file con un editor di testo, si vedrà che questo è solo un file vecchio stile INI e si può facilmente trovare la linea con la query in esso. Da lì, si potrebbe scrivere un file batch o comunque pre-processo il file di testo per consentire di manipolare la query prima di sottoporlo al lo strumento di query.

QSHELL - Se è possibile accedere ai iSeries in modo interattivo, allora si può trovare l'ambiente più familiare QSHELL di CL o REXX (anche se REXX è una specie di divertimento). QSHELL è un ambiente pieno POSIX in esecuzione su iSeries. Utilizzare il comando STRQSH per avviare QSHELL. Si può avere ksh o csh come un guscio. All'interno QSHELL, v'è un comando chiamato "DB2" che presenta le query. Quindi, si dovrebbe essere in grado di fare qualcosa di simile QSHELL interna:

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

Si può avere a giocherellare con le virgolette per ottenere ksh di passare correttamente.

Inoltre, all'interno QSHELL, si dovrebbe avere un'installazione completa Perl che vi permetterà di utilizzare DBI per ottenere i dati.

Alcuni altri modi per interagire con i dati sui iSeries: interrogazione da parte del cliente con Python tramite ODBC; query dal cliente con Jython tramite JDBC; installare Jython direttamente su iSeries e poi interrogare tramite JDBC.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top