DB2/400 UDF 中的区分大小写



我正在为服务程序过程编写SQL包装器。 该过程有效,但我正在创建的 UDF 行为异常。 当我使用外部名称关键字创建 UDF 时,它变得区分大小写。 这是我的代码:

create function C1ANEWF.getSalesAuditStorePeriodLibrary
                   (inStore decimal(5,0),
                    inDate  date)
returns char(10) ccsid 37
language rpgle
parameter style general
specific sa1802f001
not deterministic
reads sql data
returns null on null input
not fenced
program type sub
no final call
allow parallel
no scratchpad
external name C1NEWO.SA1802("getSalesAuditStorePeriodLibrary")

当我创建这个时,它可以工作。 如果我从过程名称中删除"",它不会。 我有很多不使用""的 SQL UDF,区分大小写不是问题。

有什么想法吗?

显示服务程序的过程导出,并带有DSPSRVPGM ____ DETAIL(*PROCEXP) 。 您将看到过程名称是混合大小写的。 现在看看您的旧服务计划之一。 您将看到大写名称。

引号的 SQL 确保使用混合大小写,从而匹配区分大小写的过程名称。 如果没有这些引号,名称将转换为大写,这将与您的旧过程匹配。

将子过程名称括在引号中会告诉 DB2 完全按照引号使用该名称,即混合大小写。 如果对此过程的调用仅在混合大小写中注册函数时才有效,则似乎您的调用也必须使用混合大小写。 调用语句是否使用双引号? 如果是这样,也在那里删除它们。

最新更新