2011-09-21 3 views
3

에 SQL UDF 자바 프로그램 (문자 변환 문제) 나는 http://www.itjungle.com/mpo/mpo100903-story01.html'SQLSTATE의 57017'은 iSeries

UDF이

CREATE FUNCTION re_Test(input VARCHAR(500), 
           regex VARCHAR(500)) 
RETURNS INTEGER 
EXTERNAL NAME 'UDFs.re_Test' 
LANGUAGE Java 
PARAMETER STYLE Java 
FENCED 
NO SQL 
RETURNS NULL ON NULL INPUT 
SCRATCHPAD 
DETERMINISTIC 

그리고 UDFsthat에서 자바 방법과 같은에서 지시 사항을 준수되고있는 이

public static int re_Test(String input, 
          String regex) throws Exception { 
    // returns number of occurrences 
    Pattern pattern = Pattern.compile(regex); 
    Matcher matcher=pattern.matcher(input); 

    int noFound=0; 

    while (matcher.find()) 
     noFound++; 

    return noFound; 
    } 

같은라는 모습은 내가 ,691,363 SquirrelSQL

에서 기능을 실행하는 경우 나는 내가 SQLSTATE 57017

내가 CHGJOB를 실행하고 37을 입력하여이 문제를 해결할 수 있어요 작업 로그에서이 오류를 얻을 AS/400 5020 콘솔에서 STRSQL을 실행하면210

select re_test('abcdeab','ab') from sysibm/sysdummy1 

그것은, 그러나, 잘 작동 CCSID 필드에서 65535 대신에.

로그온 할 때마다 이렇게해야하므로 바람직하지 않습니다.

누구나이 문제를 해결하는 방법을 알고 계십니까?

답변

1

사용자 프로파일은 아마도 CCSID(*SYSVAL)으로 설정되어 있습니다. 즉, 작업은 시스템 값 QCCSID을 기반으로 시작됩니다.

사용자 프로필을 CCSID(37)으로 변경하십시오.

+1

다른 사용자가이 기능을 사용하면 어떨까요? RPGLE 프로그램이이 기능을 사용하면 어떻습니까? 이것은 조금 위험합니다 – jax

+0

그래, 좋은 지적이야. 내가 뭘 생각 했어? O_o – WarrenT

관련 문제