1

我正在为服务程序过程编写 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,""区分大小写不是问题。

有任何想法吗?

4

2 回答 2

2

将子过程名称用引号括起来告诉 DB2 使用与引号完全相同的名称,即混合大小写。如果您对该过程的调用仅在您以混合大小写注册函数时有效,那么您的调用似乎也必须使用混合大小写。调用语句是否使用双引号?如果是这样,也将它们删除。

于 2013-10-16T20:49:14.970 回答
2

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

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

于 2013-10-16T22:25:40.953 回答