web-dev-qa-db-ja.com

DB2 SQLで変数を宣言する

DB2で次のSQL Serverコードを実行する方法を知っている人はいますか?

DB2システムで実行されるようにSQL Serverスクリプトを変換していますが、DB2での変数の使用に頭を悩ませる問題があります。

T-SQLコード

これは明らかに実際のコードではありませんが、例としてはうまく機能します。

DECLARE @INPUT_VALUE INT
SET INPUT_VALUE = 4756

SELECT *
FROM TABLE1
WHERE TABLE1.COLUMN1 = @INPUT_VALUE
25
I_AM_JARROD

私はこれを想像します フォーラムへの投稿 (以下で完全に引用します)は質問に答えるべきです.


プロシージャー、関数、またはトリガー定義内、または動的SQLステートメント(ホストプログラムに埋め込まれている)内:

BEGIN ATOMIC
 DECLARE example VARCHAR(15) ;
 SET example = 'welcome' ;
 SELECT *
 FROM   tablename
 WHERE  column1 = example ;
END

または(どの環境でも):

WITH t(example) AS (VALUES('welcome'))
SELECT *
FROM   tablename, t
WHERE  column1 = example

または(変数は一度だけ作成する必要があるため、これはおそらくあなたが望むものではありませんが、コンテンツはユーザーごとにプライベートになりますが、その後は誰でも使用できます):

CREATE VARIABLE example VARCHAR(15) ;
SET example = 'welcome' ;
SELECT *
FROM   tablename
WHERE  column1 = example ;

25
Michael Sharek

私もSQL Serverのバックグラウンドから来ており、過去2週間、IBM Data Studioでこのようなスクリプトを実行する方法を考え出しました。それが役に立てば幸い。

CREATE VARIABLE v_lookupid INTEGER DEFAULT (4815162342); --where 4815162342 is your variable data 
  SELECT * FROM DB1.PERSON WHERE PERSON_ID = v_lookupid;
  SELECT * FROM DB1.PERSON_DATA WHERE PERSON_ID = v_lookupid;
  SELECT * FROM DB1.PERSON_HIST WHERE PERSON_ID = v_lookupid;
DROP VARIABLE v_lookupid; 
11
JeffM