【问题标题】:Calling db2 udf that returns an integer调用返回整数的 db2 udf
【发布时间】:2020-07-11 09:06:48
【问题描述】:

我在 db2 中编写了一个用户定义函数,它需要很少的参数并返回一个整数。谁能告诉我如何调用一个返回整数的 db2 用户定义函数。

CREATE FUNCTION TEST_FUNCTION(V_DATE DATE,V_GROUP VARCHAR(20),V_FREQ 
VARCHAR(20),V_RULE VARCHAR(20))
RETURNS INTEGER
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE V_ID INTEGER;
SET V_ID = (10+ COALESENCE((SELECT MAX(ID) FROM CAL_LOG WITH UR),0));
BEGIN ATOMIC
INSERT INTO CAL_RESULT(ID,P_DATE,GROUP,FREQ,RULE)
VALUES(V_ID,V-DATE,V_GROUP,V_FREQ,V_RULE);
END;
RETURN V_ID;
END;

构建函数没有问题。

我可以使用 SELECT 调用这个函数吗?

【问题讨论】:

  • 显示你的代码并告诉它出了什么问题。
  • 请编辑您的问题以显示您已经尝试过的内容
  • 您可以将其用作任何其他内置函数:select TEST_FUNCTION(...) ftom ...values TEST_FUNCTION(...)
  • Select TEST_FUNCTION(..) from.. from 子句中应该给出什么?

标签: db2


【解决方案1】:

如果您使用MODIFIES SQL DATA 子句,那么这样的函数只能用作复合 SQL(编译)语句中赋值语句右侧的唯一元素。
CREATE FUNCTION (SQL scalar, table, or row)的“注4”。
这意味着,您只能这样使用它:

--#SET TERMINATOR @
BEGIN
  DECLARE V_RC INT;
  SET V_RC = TEST_FUNCTION(...);
END@

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2015-10-29
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2015-08-25
    相关资源
    最近更新 更多