기본 사용자 프로파일이 CCSID 65535를 사용하기 때문에 데이터를 올바르게 변환하지 못하는 iSeries Function에 문제점이 있습니다. CCSID 37 일과 모든 것이 잘 작동합니다.SQL 사용자 정의 Java 함수 (CCSID 65535와 CCSID 1200 사이의 문자 변환이 유효하지 않음)
사용자가 작업 속성을 변경할 필요가없는 솔루션이 필요합니다.
기능은 자바 응용 프로그램을 실행하고 나는 처음 CCSID (37)를 사용하지 않고 그것을 시도하지만,이를 추가하는 것은 미국 영어로 변환하는 매개 변수 강제 시킨다는 게시물을 발견이
CREATE FUNCTION mylib/re_Test2(input VARCHAR(500) CCSID 37,
regex VARCHAR(500) CCSID 37)
RETURNS INTEGER
EXTERNAL NAME 'UDFs.re_Test'
LANGUAGE Java
PARAMETER STYLE Java
FENCED
NO SQL
RETURNS NULL ON NULL INPUT
SCRATCHPAD
DETERMINISTIC
처럼 보인다. 그것은 나를 위해 일하는 것 같지 않습니다.
제안 사항?
STRSQL 및 RPGLE 스크립트에서 실행을 시도했지만 둘 다 작동하지 않지만 SQLSquirrel (ODBC를 사용하는 오픈 소스 SQL 프로그램)에서 작동합니다.
현재 sysibm/sysdummy1에서're_test ('a', 'a') 선택과 같은 테스트를 위해 문자열 리터럴을 사용하고 있습니다. 작동하지 않습니다. sysdummy1의 CCSID는 37 – jax
입니다. 작업 CCSID가 65535이면 예상됩니다 ...당신은 ** ** 문자 번역을하지 말라는 시스템을 말하고 있습니다. –
CCSID 65535는 비 변환 용입니다. 그것은 본질적으로 "바이너리"로 정의됩니다 (그리고 나는 왜 그렇게 많이 사용되는지 이해할 수 없습니다). 수신자 CCSID (예 : 37)로 사용되는 것은 ** 처음부터 데이터를 넣는 데 사용 된 것과 정확히 동일한 CCSID 인 ** ** 정상적으로 작동합니다. 그렇지 않은 경우, 시각적 검사를 제외하고는 캐치되지 않는 변환 된 데이터에 오류가 있습니다. 소프트웨어는 오류를 일으키지 않습니다 (CCSID가 변환에 유효하지 않은 경우는 제외). – user2338816