如何在 DB2 Z/OS 8.1 版本中创建用户定义的函数



这是我的代码:我试图从Data Studio为z/os创建UDF函数。我不需要使用外部函数或其他函数。我需要执行这个SQL函数。

 CREATE FUNCTION FUNCTION5()
 RETURNS FLOAT
 language sql
 DETERMINISTIC
 READS SQL DATA 
 NO EXTERNAL ACTION
 BEGIN 
 DECLARE RANVAL FLOAT ;
 SELECT RAND() INTO RANVAL FROM SYSIBM.SYSDUMMY1;   
 RETURN RANVAL ;
 END

但是,在执行上述代码时,我收到此错误。请你帮我弄清楚。

我想在 DB2 Z/OS 上开发近 20 个标量 UDF。请帮帮我。

 Deploy [MeDB]MeDB.FUNCTION5
Running
MeDB.FUNCTION5 - Deploy started.
Create user-defined function returns SQLCODE: -199, SQLSTATE: 42601.
MeDB.FUNCTION5: 0: DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601,      SQLERRMC=DECLARE;ON AFTER <INTEGER>, DRIVER=4.18.60
DB2 SQL Error: SQLCODE=-199, SQLSTATE=42601, SQLERRMC=DECLARE;ON AFTER <INTEGER>, DRIVER=4.18.60
MeDB.FUNCTION5 - Deploy failed.
MeDB.FUNCTION5 - Roll back completed successfully.
我相信

您尝试创建的函数在 DB2 7 中不受支持。BEGIN、END 和 DECLARE 关键字的使用表明您正在尝试使用 SQLPL,直到 DB2 10 才支持将 SQLPL 作为编译的标量函数。我没有任何关于 7 的文档,但我认为您只能创建内联标量函数,该函数仅限于 RETURN 语句中的一个表达式,如 DB2 10 CREATE 函数(内联标量)参考中所述:

CREATE FUNCTION(内联 SQL 标量)语句在当前服务器上定义一个 SQL 标量函数,并为函数的主体指定一个 SQL 过程语言 RETURN 语句。每次调用该函数时,该函数都会返回一个值。

SQL-routine-body

指定单个 RETURN 语句。

相关内容

  • 没有找到相关文章

最新更新