2011-05-13 45 views
4

如何在DB2中創建一個從序列中獲取值並返回它的函數?如何在DB2中創建一個返回序列值的函數?

應該可以使用該函數在SELECT或INSERT語句,例如:

select my_func() from xxx 
insert into xxx values(my_func()) 

基本上我正在使用一個複雜的公式序列值,並且我想封裝內部的計算功能。

編輯:我不是問如何從序列中簡單得到下一個值。

+0

我不熟悉DB2與SQL Server這樣的道歉,如果鏈接是沒有幫助的。本文討論[DB2序列] [1]的創建,我假定您熟悉(我不是)。然而,根據這個[討論] [2]中的原始海報,似乎沒有人可以從函數調用中消耗序列。這符合SQL Server的限制,即用戶定義的函數不能修改數據庫狀態。 [1]:http://www.ibm.com/developerworks/data/library/techarticle/0205pilaka/0205pilaka2.html#section4 [2]:http://bit.ly/mvoGjY – billinkc 2011-05-18 04:19:02

回答

6
CREATE FUNCTION "MYSCHEMA"."MY_FUNC"(PARAM1 VARCHAR(4000)) 
    RETURNS INT 
SPECIFIC SQL110520140321900 BEGIN ATOMIC 
    DECLARE VAR1 INT; 
    DECLARE VAR2 INT; 
    SET VAR1 = NEXTVAL FOR MY_SEQ; 
    SET VAR2 = VAR1 + 2000; --or whatever magic you want to do 
    RETURN VAR2; 
END 

要嘗試一下:

SELECT MY_FUNC('aa') FROM SYSIBM.SYSDUMMY1; 
相關問題