«SQLSTATE 57017» (проблема преобразования символов) для Java-программы SQL UDF на iSeries - PullRequest
3 голосов
/ 22 сентября 2011

Я следовал инструкциям на 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.

Это вряд ли желательно, так как мне придется делать это каждый раз, когда я вхожу в систему.,

Кто-нибудь знает, как решить эту проблему?

1 Ответ

1 голос
/ 22 сентября 2011

Ваш профиль пользователя, вероятно, установлен на CCSID(*SYSVAL), что означает, что ваша работа будет запущена на основе системного значения QCCSID.

Рассмотрите возможность изменения вашего профиля пользователя на CCSID(37).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...