创建 DB2400 外部用户定义的 table 函数?

Create DB2400 external user defined table function?

我正在尝试在 DB2400 中创建一个 UDTF

我有一个要调用的 ILE CL 程序。程序已创建,运行如我所愿。

我创建了 UDTF

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.

我很确定它会创建,因为在我第一次删除它之前它不会让我再次创建它。

对我做错了什么有什么建议吗?

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

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

要么将参数更改为 varchar(CL 不支持),要么强制转换文字。

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