Я следовал инструкциям на http://www.itjungle.com/mpo/mpo100903-story01.html
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
И метод Java в UDF, который вызывается, выглядит следующим образом
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;
}
Если я запускаю функцию из SquirrelSQL
select re_test('abcdeab','ab') from sysibm/sysdummy1
Она работает нормально, однако, если я запускаю STRSQL из консоли AS / 400 5020, я получаю эту ошибку в журнале заданий SQLSTATE 57017
Я могу решить эту проблему, запустив CHGJOB и введя 37 вместо 65535 в поле CCSID.
Это вряд ли желательно, так как мне придется делать это каждый раз, когда я вхожу в систему.,
Кто-нибудь знает, как решить эту проблему?