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

时间:2017-01-11 13:20:29

标签: db2 zos db2-zos

这是我的代码:我试图从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个Scalar 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.

1 个答案:

答案 0 :(得分:0)

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

  

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

     

<强> SQL例程体

     

指定单个RETURN语句。