4
如何在DB2中創建一個從序列中獲取值並返回它的函數?如何在DB2中創建一個返回序列值的函數?
應該可以使用該函數在SELECT或INSERT語句,例如:
select my_func() from xxx
insert into xxx values(my_func())
基本上我正在使用一個複雜的公式序列值,並且我想封裝內部的計算功能。
編輯:我不是問如何從序列中簡單得到下一個值。
如何在DB2中創建一個從序列中獲取值並返回它的函數?如何在DB2中創建一個返回序列值的函數?
應該可以使用該函數在SELECT或INSERT語句,例如:
select my_func() from xxx
insert into xxx values(my_func())
基本上我正在使用一個複雜的公式序列值,並且我想封裝內部的計算功能。
編輯:我不是問如何從序列中簡單得到下一個值。
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;
我不熟悉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