0

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

 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.
4

1 回答 1

0

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

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

SQL 例程主体

指定单个 RETURN 语句。

于 2017-01-11T23:02:51.400 回答