【问题标题】:Case sensitivity in DB2/400 UDF?DB2/400 UDF 中是否区分大小写?
【发布时间】:2013-10-25 02:06:57
【问题描述】:

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

有什么想法吗?

【问题讨论】:

  • 谢谢。我的假设是 RPG 始终不区分大小写。查看 Service 程序,EXTPROC 是使用引号定义的,这使其区分大小写。

标签: stored-procedures user-defined-functions ibm-midrange db2-400 rpgle


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2013-03-16
      • 2012-08-07
      • 1970-01-01
      • 2012-03-11
      • 2023-03-22
      相关资源
      最近更新 更多