我是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;
但这对我们来说是错误的。因此,如果您使用该语法,您可以评论为什么不起作用。
答案 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表示。