2017-09-25 50 views
0

我想在DB2400中创建一个UDTF创建DB2400外部用户自定义表函数?

我有一个ILE CL程序,我想调用。该程序创建并运行,如我所愿。

创建

create function SMLFQA.XAJJUPC_LE(USERID CHAR(10)) 
    returns table (
       STATUS CHAR(3), 
       USED DEC(7, 0), 
       CREATED DEC(7, 0), 
       SIGNON DEC(7, 0), 
       EXCLUDE DEC(7, 0)) 
    EXTERNAL NAME 'SMLPQA/XAJJUPC_LE' 
    specific XAJJUPC_LE 
    language CL 
    DISALLOW PARALLEL 
    NO SQL 
    PARAMETER STYLE DB2SQL 

它显然被创建

我尝试运行它

select * from table(smlfqa.xajjuc_le('xxxxx')) a 

我能得到什么

select * from table(smlfqa.xajjuc_le('xxxxx')) a 

[SQL0204] XAJJUC_LE in SMLFQA type *N not found. 


Elapsed Time: 0 hr, 0 min, 0 sec, 0 ms. 

我敢肯定的UDTF它创造,因为它没有让我再次创造它,直到我第一次放弃它。

关于我在做什么的任何建议是错误的?

回答

1

SQL中的字符串文字是varchar。您已将UDTF定义为需要char参数。

由于SQL允许函数重载,因此它正在寻找一个接受varchar的函数。

将parm更改为varchar(CL不支持)或者转换文字。

select * from table(smlfqa.xajjuc_le(char('xxxxx'))) a