我在尝试理解 DB2 sql 时面临挑战(注意,我来自 MS SQL Server):P。
这是一个场景,我有 2 个表,一个有 ID 和其他详细信息,第二个有很多与每个 ID 对应的其他信息。
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,该 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] 我尝试过的另一件事不起作用:
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,阿比纳夫
2016 年 5 月 13 日(星期五 13 日)更新
创建存储过程是解决此问题的唯一方法:(