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使用與引號完全相同的名稱,即混合使用大小寫。如果只有當您以混合大小寫方式註冊該功能時才能使用此過程,則似乎您的呼叫也必須使用混合大小寫。調用語句是否使用雙引號?如果是這樣,那麼在那裏刪除它們。