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