【问题标题】:Getting a conversion error when calling a Db2 stored procedure in as400 rgp在 as400 rgp 中调用 Db2 存储过程时出现转换错误
【发布时间】:2013-04-23 18:29:09
【问题描述】:

我在使用 iSeries 调用 AS400/RPG/DB2 中的存储过程时遇到转换错误。

db2 参数定义为 CHAR 32000,.net 应用传入大约 20000 个字符,调用引发错误。

当 .net 应用程序传递包含双字节字符的数据时,似乎会发生此错误。如何将字符串传递给包含双字节字符的 DB2 存储过程?

IBM 错误代码是 6107。

【问题讨论】:

  • 你收到的sql代码是什么?
  • 你曾经解决过这个问题吗?
  • 是的。 .net和as400程序中的数据类型需要匹配。

标签: .net db2 rpg


【解决方案1】:

也许您打算将其定义为 VARCHAR 32000。CHAR 是固定长度,但您的 .NET 应用程序未发送定义的长度。

【讨论】:

    【解决方案2】:

    如果您尝试将 20K 双字节字符传递到 32K 字符字段,则该字段不够长。 20K 双字节字符占用 40K 空间。另一个问题可能是您遇到了 CCSID 问题。您可能想尝试使用 VARGRAPHIC 来保存双字节字符。

    【讨论】:

    • 我不认为是导致问题的大小。我认为这是双字节字符。我想知道在通过 .net prodivder 将数据传递给 DB2 过程之前是否需要对数据做一些特殊的事情。
    • 您可能想要检查 DB2 端的 CCSID 是否设置为 1200,即 UTF-16。请注意,RPG 使用由 UTF-16 取代的 UCS-2。 UCS-2 CCSID 为 13488,但两者大多可以互换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    相关资源
    最近更新 更多