DB2 sqlを理解しようとする課題に直面しています(注:私はMS SQL Serverから来ています):P。
これがシナリオです。1つにはIDとその他の詳細があり、もう1つには各IDに対応する他の多くの情報がある2つのテーブルがあります。
ID Info for ID
_______ ____> _______
| | / | |
| T1 |<---------> | T2 |
|_____| \____> |_____|
SQL Serverから来て、私は次のようなスクリプトを実行することに慣れています。
Declare @ID int
Declare @ID1 int
select @ID=ID from T1 where col1 = @ID1
select * from T2 where ID = @ID
これはすべて正常に実行され、ID1に対応するIDを取得します。これを使用して、T2からIDに関するすべての情報を取得できます。
悲しいことに、DB2では、これは私の顔の中で爆発します。このクエリをもう一度実行すると、私は永遠に失望します:(。
私はいくつかの調査を行い、これを書きました(変数宣言でさえ立ち往生しています)。
--#SET TERMINATOR @
BEGIN ATOMIC
DECLARE UID char(30);
END @
他の人にとってはうまくいきましたが、次のエラーが発生します:
BEGIN ATOMIC
DECLARE UID char(30);
END
ILLEGAL USE OF KEYWORD ATOMIC. TOKEN WAS EXPECTED. SQLCODE=-199, SQLSTATE=42601, DRIVER=3.63.108
他の情報:
IBM DB2 for z / OS V9.1 IBM Data Studio V3.1.1.0
[編集:DECLAREを使用]私が試したもう1つのことは、うまくいきませんでした。
CREATE VARIABLE UID CHAR(30) DEFAULT 'USERID';
select * from testdb2.T1 A WHERE A.UID=v_UID;
--some other activity goes here
--and here
DROP VARIABLE UID;
TIA、Abhinav
2016年5月13日更新(13日の金曜日)
ストアドプロシージャを作成することが、これを修正する唯一の方法です:(