1

我正在为服务程序过程编写一个SQL包装器。该程序有效,但我创建的UDF行为很奇怪。当我使用外部名称关键字创建UDF时,它变得区分大小写。这里是我有的代码:DB2/400 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,我没有使用"",区分大小写不是问题。

任何想法?

+0

谢谢。我的假设是RPG总是不区分大小写。看看服务程序,EXTPROC是使用引号定义的,这使得区分大小写。 – jgriffin

回答

2

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

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

2

将子过程名称用引号引起来告诉DB2使用与引号完全相同的名称,即混合使用大小写。如果只有当您以混合大小写方式注册该功能时才能使用此过程,则似乎您的呼叫也必须使用混合大小写。调用语句是否使用双引号?如果是这样,那么在那里删除它们。