SQL 用户定义的 Java 函数(CCSID 65535 和 CCSID 1200 之间的字符转换无效)

标签 sql ibm-midrange

我在使用 iSeries Function 时遇到了问题,因为我的默认用户配置文件使用的是 CCSID 65535,所以它无法正确转换数据。我可以将作业更改为 CCSID 37,一切正常。

我想要一个用户不需要更改其作业属性的解决方案。

该函数正在运行一个 java 应用程序,如下所示

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

我最初在不使用 CCSID 37 的情况下进行了尝试,但发现一些帖子表明添加此选项会强制将所有参数转换为美国英语。它似乎对我不起作用。

有什么建议吗?

我尝试从 STRSQL 和 RPGLE 脚本运行,但两者都不起作用,但是,从 SQLSquirrel(一个使用 ODBC 的开源 SQL 程序)它可以运行。

最佳答案

CCSID 65535 表示“不翻译字符”...因此,如果您的表是使用特定的 CCSID 创建的,我建议使用该 CCSID 运行应用程序。

关于SQL 用户定义的 Java 函数(CCSID 65535 和 CCSID 1200 之间的字符转换无效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631582/

相关文章:

php - MySql 反向 LIKE 子句

c# - 如何使用 C# 在查询中传递字节数组?

java - 在 DBUnit 中导出/导入数据类型?

Apache 反向代理奇怪的超时

sql - 相关子查询的使用

sql - oracle pl/sql 结果成一个字符串

php - 我可以使用组连接的 2 种组合吗?或者我应该使用子查询

ibm-midrange - 如何在RPG代码中使用%Replace函数?

sql - 达到总和后停止 SQL 选择

php - 从PHP调用RPG程序