DB2 - Wie eine Ad-hoc-Auswahlabfrage mit einem Parameter in IBM System i Access für Windows GUI-Tool ausführen

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

Frage

Ich möchte einige Ad-hoc-SELECT-Anweisungen in der IBM System I Navigator-Tool für DB2 mit einer Variablen laufen, dass ich erklären.

Zum Beispiel in der SQL Server-Welt würde ich einfach das tun in dem SQL Server Management Studio-Abfrage-Fenster wie folgt:

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

select * from TableName where Column = @VariableName;

Wie kann ich etwas ähnliches in dem IBM System I Navigator-Tool?

War es hilfreich?

Lösung

lief ich über dieses Thema während für die gleiche Frage zu suchen. Mein Kollege zur Verfügung gestellt, die Antwort. Es ist in der Tat möglich, Variablen in einer Ad-hoc-SQL-Anweisung in Navigator zu erklären. Dies ist, wie es gemacht wird:

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

Wenn Sie die Variablennamen nicht fallen wird es hängen herum, bis wer weiß, wann ...

Andere Tipps

Im Moment arbeiten wir an der gleichen Ausgabe bei der Arbeit. Unfortunaly schlossen wir, dass dies nicht möglich ist. Ich bin damit einverstanden, wäre es großartig, aber es funktioniert einfach nicht so. iNavigator nicht unterstützt SET oder definieren. Sie können, dass in Embedded SQL tun, aber das SQL nicht eingebettet ist. Auch wenn Sie ein separates Dokument (xxx.sql) erstellen, dann müssen Sie dieses Dokument öffnen, um das Skript auszuführen, was es ein interaktives Skript macht (das heißt, ist DECLARE SECTION nicht erlaubt).

Als Alternative in der SQL-Bildschirm / script können Sie CL: . Alles, was nach diesem Präfix wird als CL-Befehl ausgeführt. Sie können Ihre Tabellen (z RNMF) auf diese Weise manipulieren.

Als zweite Alternative, hat die iSeries Unterstützung Rexx-Skripte (default mit dem Betriebssystem installiert ist). Rexx ist eine gute dynamische Skriptsprache und es unterstützt eingebettete SQL. Ich habe das viele Male getan und es funktioniert super. Ich habe auch Skripte für unsere Produktionsumgebung.

Erstellen Sie einfach einen ‚default‘ Skript mit einem Beispiel PREPARE und CURSOR-Anweisung und kopieren Sie nach Belieben. Mit diesem Skript können Sie spielen, um. Siehe das Rexx Handbuch für die korrekte Syntax des exec-SQL. Außerdem haben Sie STDIN und STDOUT, aber Sie können verwenden ‚OVRDBF‘ zu Punkt zu einer Datenbanktabelle (physische Datei). Lass es mich wissen, wenn Sie ein Beispiel Rexx-Skript benötigen.

Beachten Sie, dass das Handbuch "SQL Embedded-Programmierung" hat Rexx Beispiele.

Hier sind ein paar andere Alternativen.

Datenübertragung Tool - Sie können die iSeries Datentransfer-Tool von der Befehlszeile (RTOPCB) laufen. Zunächst wird die GUI-Version laufen und eine Definitionsdatei erstellen. Wenn Sie diese Datei mit einem Texteditor bearbeiten, werden Sie sehen, dass dies nur eine altmodische INI-Datei und Sie können leicht die Zeile mit der Abfrage darin finden. Von dort können Sie eine Batchdatei schreiben oder auf andere Weise die Textdatei vorverarbeitet, damit Sie die Abfrage manipulieren, bevor es das Abfrage-Tool eingeben.

QSHELL - Wenn Sie interaktiv mit den iSeries anmelden können, dann können Sie die QSHELL Umgebung vertrauter als CL oder REXX finden (obwohl REXX Art von Spaß ist). QSHELL ist eine voll auf der iSeries läuft POSIX-Umgebung. Verwenden Sie den Befehl STRQSH QSHELL zu starten. Sie können ksh oder csh als Shell haben. Innerhalb QSHELL, gibt es einen Befehl „db2“ dass vorträgt Abfragen bezeichnet. Also, sollten Sie in der Lage sein, so etwas wie dies innerhalb QSHELL zu tun:

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

Sie können mit den Anführungszeichen Geige haben, um KSH sie richtig passieren.

Auch innerhalb QSHELL, sollten Sie eine vollständige Perl-Installation, die Sie DBI verwenden können Daten zu erhalten.

Einige andere Möglichkeiten, um mit Daten auf dem iSeries zur Interaktion: Abfrage von dem Client mit Python über ODBC; Abfrage von dem Client mit Jython über JDBC; Jython direkt auf der iSeries installieren und dann Abfrage über JDBC.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top