DB2 - gewusst Wie: ausführen einer ad-hoc-select-Abfrage mit einem parameter im IBM System i Access für Windows-GUI-Tool
Ich würde gerne einige ad-hoc-select-Anweisungen in der IBM System I Navigator-Werkzeug für DB2 mithilfe einer variable, die ich erkläre.
Beispielsweise in der SQL Server-Welt würde ich dies ganz einfach im 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 tun in der IBM System I Navigator tool?
Bis ich 7.1, iNav keine "variable" - Fähigkeit. Aber es sollte keine Notwendigkeit für eine sowieso. Wenn Sie können geben Sie eine DECLARE-Anweisung und einem Variablennamen und dessen Wert haben, können Sie auch einfach eingeben (oder einfügen oder suchen/ersetzen) den Wert in einer ad-hoc-Erklärung. Warum würde eine variable benötigt? (Aber beachten Sie, dass ich wollte, dass man von Zeit zu Zeit. Ich bin mehr daran interessiert, warum andere wollen, dass Sie.)
Ein Grund könnte sein, wenn Sie eine Anfrage haben, bezieht sich auf eine variable mehr als einmal, könnten Sie nicht wollen, zu wiederholen, sich selbst kopieren Sie den Wert in mehreren Zeiten.
Verstanden, aber das ist bei Suchen/Ersetzen (alle) verwendet werden würde. Es kostet ein paar zusätzliche Mausklicks.
Ein Grund könnte sein, wenn Sie eine Anfrage haben, bezieht sich auf eine variable mehr als einmal, könnten Sie nicht wollen, zu wiederholen, sich selbst kopieren Sie den Wert in mehreren Zeiten.
Verstanden, aber das ist bei Suchen/Ersetzen (alle) verwendet werden würde. Es kostet ein paar zusätzliche Mausklicks.
InformationsquelleAutor Ken Burkhardt | 2010-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lief ich über diesen Beitrag bei der Suche für die gleiche Frage. Mein Kollege gab die Antwort. Es ist durchaus möglich, Variablen deklarieren, in einer ad-hoc-SQL-Anweisung im Navigator. Dies ist, wie es gemacht wird:
Wenn Sie nicht fallen, der name der Variablen wird es hängen herum, bis wer weiß Wann...
Muss eine alte version.. Die ERSTELLEN ODER ERSETZEN-Unterstützung wurde Hinzugefügt am 7.1. Wie war die Unterstützung für den globalen Variablen.
Ich musste angeben, ein schema zu erstellen, die die variable in...
CREATE OR REPLACE VARIABLE schema.variable DECIMAL(8,0);
... undSET schema.variable = 20170721;
InformationsquelleAutor Brian
Im moment arbeiten wir an dem gleichen Problem bei der Arbeit. Leider kamen wir zu dem Schluss, dass dies nicht möglich ist. Ich Stimme zu, es wäre toll aber es funktioniert einfach nicht so. iNavigator nicht den support EINSTELLEN oder zu Definieren. Sie können dies in embedded SQL-aber das ist nicht in embedded SQL. Auch wenn Sie, erstellen Sie ein separates Dokument (xxx.sql), dann müssen, um dieses Dokument zu öffnen, um das Skript auszuführen, was macht es ein interaktives Skript (das ist, ERKLÄREN ABSCHNITT ist nicht erlaubt).
Als alternative, in der SQL-Bildschirm/Skript, das Sie verwenden können, CL:. Alles, was nach diesem Präfix wird ausgeführt, wie CL-Befehl. Sie können Bearbeiten von Tabellen (z.B. RNMF) auf diese Weise.
Als eine zweite alternative, die iSeries unterstützt Rexx-Skripte (default installiert mit dem os). Rexx ist eine gute dynamische Skriptsprache und es unterstützt embedded SQL. Ich habe getan, dass viele Male, und es funktioniert Super. Ich selbst erstellte scripts für unsere Produktionsumgebung.
Erstellen Sie einfach ein 'default' - Skript mit einem Beispiel VORBEREITEN, und den CURSOR-Anweisung und kopieren. Mit diesem Skript können Sie spielen, um. Finden Sie die Rexx-Handbuch für die korrekte syntax der exec-sql. Auch Sie haben STDIN und STDOUT, aber Sie können 'OVRDBF" auf eine Datenbank-Tabelle (physische Datei). Nur lassen Sie mich wissen, wenn Sie benötigen, ein Beispiel, das Rexx-Skript.
Beachten Sie, dass das Handbuch "SQL embedded-Programmierung" hat Rexx Beispiele.
Wenn der hart wird wenn, die, obwohl bekommen würde ... (aber wenn "ad-hoc-sql + "Variablen" ist das, was Sie brauchen, Sie sollten wirklich versuchen Rexx. Vergessen Sie nicht, dass es interpretiert wird. Also, auch mit embedded sql: Bearbeiten Sie Ihre source, speichern und ausführen. Es funktioniert wie ein Charme)
InformationsquelleAutor robertnl
Hier sind noch ein paar andere alternativen.
Daten-Transfer-Tool - Sie können den iSeries-Daten-Transfer-Tool von der Befehlszeile aus (RTOPCB). Zunächst führen Sie die GUI-version und erstellen Sie eine definitions-Datei. Wenn Sie diese Datei Bearbeiten Sie mit einem text-editor, sehen Sie, dass dies nur einer altmodischen INI-Datei, können Sie leicht finden Sie die Zeile mit der Abfrage. Von dort aus könnte man eine Batchdatei schreiben oder ansonsten pre-Prozess-dem-text-Datei zu erlauben, Sie zu manipulieren, die Abfrage vor dem Absenden der query-tool.
QSHELL - Wenn Sie können melden Sie sich auf dem iSeries-interaktiv, dann finden Sie möglicherweise die QSHELL Umgebung vertrauter ist, als CL oder REXX (obwohl REXX ist eine Art von Spaß). QSHELL ist eine vollständige POSIX-Umgebung laufen auf der iSeries. Verwenden Sie den Befehl STRQSH zu starten QSHELL. Sie können ksh oder die csh als shell. Innerhalb QSHELL, es gibt einen Befehl namens "db2" , der Abfragen sendet. Also, sollten Sie in der Lage sein, etwas zu tun, wie dies in QSHELL:
Können Sie tüfteln, mit Anführungszeichen zu bekommen ksh übergeben Sie Sie richtig ein.
Auch innerhalb QSHELL haben, sollten Sie eine komplette Perl-installation, die Ihnen erlaubt, die Anwendung DBI Daten zu erhalten.
Einige andere Wege, um die Interaktion mit Daten auf der iSeries: Abfrage vom client mit Python per ODBC; Abfrage vom client mit Jython über JDBC; installieren Jython direkt auf der iSeries und dann die Abfrage über JDBC.
InformationsquelleAutor Tim