在DB2中声明一个变量

时间:2010-11-01 04:26:48

标签: variables db2

我是DB2的新手。我正在努力帮助其他人,因为他是SQL新手。

我想要做的事情在SQL Server中看起来像这样:

declare @MaxValue int
select @MaxValue = Max(ID_COLUMN) from MainTable 

insert into MainTable (ID_COLUMN, OTHER_STUFF)
select TEMP_ID + @MaxValue, MORE_OTHER_STUFF
from   TempTable

我如何在DB2中执行此操作? (如果你能告诉我一种方法,那么插入的值就可以从ID_COLUMN中继续计算当前最大值。)

注意:我看到很多例子说你可以像这样声明一个变量

DECLARE myvariable int;

但这对我们来说是错误的。因此,如果您使用该语法,您可以评论为什么不起作用。

2 个答案:

答案 0 :(得分:2)

你有什么应该工作。看Here你确定你没有犯更多的错误吗?也许在你的过程的开始区块。

听起来你想要一个像我这样的标识栏。

col3 INT NOT NULL GENERATED ALWAYS AS IDENTITY
                                     (START WITH 100, INCREMENT BY 5)) 

如果您来自SQL Server / Sybase,那么DB2标识列的一个好处就是它们不会像在前面提到的平台上那样“跳转”。

如果您需要知道生成的最后一个身份值,那么您可以执行类似这样的操作

 VALUES IDENTITY_VAL_LOCAL() INTO :MY_LOCAL_VAR_FOR_IDENTITY

因此您可能需要通过执行上述两个SQL语句然后返回值

答案 1 :(得分:1)

变量可以在复合SQL块中声明,通过BEGIN ATOMIC表示。