gpt4 book ai didi

java - 'SQLSTATE 57017'(字符转换问题)对于 iSeries 上的 SQL UDF java 程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:27 26 4
gpt4 key购买 nike

我按照 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

被调用的 UDF 中的 java 方法如下所示

  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

它工作正常,但是,如果我从 AS/400 5020 控制台运行 STRSQL,我会在作业日志 SQLSTATE 57017

中收到此错误

我可以通过运行 CHGJOB 并在 CCSID 字段中输入 37 而不是 65535 来解决这个问题。

这几乎是不可取的,因为我每次登录时都需要这样做。

有人知道如何解决这个问题吗?

最佳答案

您的用户配置文件可能是使用 CCSID(*SYSVAL) 设置的,这意味着您的作业将根据系统值 QCCSID 启动。

考虑将您的用户配置文件更改为 CCSID(37)

关于java - 'SQLSTATE 57017'(字符转换问题)对于 iSeries 上的 SQL UDF java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com