代码之家  ›  专栏  ›  技术社区  ›  Vaccano

在DB2中声明变量

  •  1
  • Vaccano  · 技术社区  · 14 年前

    我是一个完全的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_列中插入的值就可以从当前的最大值开始计数,那么你就可以获得额外的积分。)

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

    DECLARE myvariable int;
    

    但这对我们来说是错误的。所以,如果你使用这种语法,也许你可以评论一下为什么它不起作用。

    2 回复  |  直到 14 年前
        1
  •  2
  •   phatmanace    14 年前

    你所拥有的应该有用。看 Here 你确定你没有犯更严重的错误吗?可能在你的程序的开始部分。

    听起来你想给我一个这样的身份专栏。

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

    如果您来自SQL Server/Sybase,那么使用DB2 identity列的一个好处是它们不会像在上述平台上那样“跳转”。

    如果需要知道最后生成的标识值,则执行以下操作

     VALUES IDENTITY_VAL_LOCAL() INTO :MY_LOCAL_VAR_FOR_IDENTITY
    

        2
  •  1
  •   Fred Sobotka    14 年前

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