5

宣言した変数を使用して、DB2用のIBMSystemIナビゲーターツールでアドホックなselectステートメントを実行したいと思います。

たとえば、SQL Serverの世界では、次のようにSQL ServerManagementStudioのクエリウィンドウでこれを簡単に実行できます。

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

select * from TableName where Column = @VariableName;

IBM System Iナビゲーター・ツールで同様のことを行うにはどうすればよいですか?

4

3 に答える 3

9

同じ質問を検索しているときに、この投稿に出くわしました。私の同僚が答えを提供しました。ナビゲーターのアドホックSQLステートメントで変数を宣言することは確かに可能です。これはそれが行われる方法です:

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

変数名を削除しないと、誰がいつかを知るまで、変数名はぶらぶらします...

于 2010-12-15T14:49:50.923 に答える
1

現在、同じ問題に取り組んでいます。残念ながら、これは不可能であると結論付けました。私は同意します、それは素晴らしいでしょうが、それはそのようには機能しません。iNavigatorはSETまたはDefineをサポートしていません。これはEmbeddedSQLで実行できますが、これはEmbeddedSQLではありません。別のドキュメント(xxx.sql)を作成する場合でも、このドキュメントを開いてスクリプトを実行する必要があります。これにより、インタラクティブスクリプトになります(つまり、DECLARE SECTIONは許可されません)。

別の方法として、SQL画面/スクリプトでCLを使用できます。このプレフィックス以降は、CLコマンドとして実行されます。この方法でテーブル(RNMFなど)を操作できます。

2番目の選択肢として、iSeriesはRexxスクリプトをサポートします(デフォルトではOSとともにインストールされます)。Rexxは優れた動的スクリプト言語であり、埋め込みSQLをサポートします。私はそれを何度もやりました、そしてそれは素晴らしい働きをします。実稼働環境用のスクリプトも作成しました。

PREPAREおよびCURSORステートメントの例を使用して「デフォルト」スクリプトを1つ作成し、自由にコピーするだけです。そのスクリプトを使用すると、いろいろと遊ぶことができます。exec-sqlの正しい構文については、Rexxのマニュアルを参照してください。また、STDINとSTDOUTがありますが、「OVRDBF」を使用してデータベーステーブル(物理ファイル)を指すことができます。Rexxスクリプトの例が必要な場合はお知らせください。

マニュアルの「SQL組み込みプログラミング」にはRexxの例があることに注意してください。

于 2010-03-01T15:56:16.547 に答える
0

他のいくつかの選択肢があります。

データ転送ツール-コマンドライン(RTOPCB)からiSeriesデータ転送ツールを実行できます。まず、GUIバージョンを実行し、定義ファイルを作成します。このファイルをテキストエディタで編集すると、これは昔ながらのINIファイルであり、クエリを含む行を簡単に見つけることができます。そこから、バッチファイルを作成するか、テキストファイルを前処理して、クエリツールに送信する前にクエリを操作できるようにすることができます。

QSHELL-iSeriesに対話式にログオンできる場合は、QSHELL環境がCLまたはREXXよりも馴染みがあると感じるかもしれません(REXXはちょっと楽しいですが)。QSHELLは、iSeries上で実行される完全なPOSIX環境です。コマンドSTRQSHを使用して、QSHELLを開始します。シェルとしてkshまたはcshを使用できます。QSHELL内には、クエリを送信する「db2」というコマンドがあります。したがって、QSHELL内で次のようなことができるはずです。

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

kshに引用符を正しく渡すには、引用符をいじる必要がある場合があります。

また、QSHELL内には、DBIを使用してデータを取得できる完全なPerlインストールが必要です。

iSeries上のデータを操作する他のいくつかの方法:ODBCを介したPythonを使用したクライアントからのクエリ。JDBCを介したJythonを使用したクライアントからのクエリ。JythonをiSeriesに直接インストールしてから、JDBCを介してクエリを実行します。

于 2010-03-28T03:21:16.770 に答える