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는 이름을 정확히 따 H 표로, 즉 대소 문자를 사용하도록 DB2에 지시합니다. 이 절차에 대한 호출이 대소 문자가 혼합 된 경우에만 함수를 등록 할 때만 작동하면 대/소문자를 함께 사용해야합니다. 호출 문은 큰 따옴표를 사용합니까? 그렇다면 거기에서도 제거하십시오.

관련 문제