0
我有一个像下面这样的db2存储过程。这个过程调用一个CL来调用一个RPG程序。iSeries db2存储过程调用RPG程序运行时的字符集问题
CREATE PROCEDURE bsm4obj/TXCL4055
(
INOUT POCNO CHAR (10),
INOUT POCRN DEC (2 , 0),
INOUT PSPNO CHAR (10),
INOUT PMTAD CHAR (1),
INOUT PYREX CHAR (1),
INOUT PMTYR CHAR (1),
INOUT PKMLK CHAR (10),
INOUT HATVR CHAR (1)
)
LANGUAGE CL NOT DETERMINISTIC NO SQL EXTERNAL
NAME bsm4obj/txCL4055 PARAMETER STYLE GENERAL
我从服务器调用该proc。 (ODBC语言ID土耳其语);
OdbcCommand cmd = new OdbcCommand("{CALL BSM4OBJ.TXCL4055(?,?,?,?,?,?,?,?)}", as400con);
cmd.CommandType = CommandType.Text;
当执行RPG程序(在步骤如下面)变量“SS”不是由编译器识别像它不过是“@@”。
TSDEPR IFEQ 'SS'
//读取像TSDEPR IFEQ '@@'
程序在QPADEV会议完全执行对AS400但SQL调用没有这样的表现。
我用RPG中的临时角色代替土耳其静态字符。 但我想找到确切的解决方案。 我会非常高兴,如果你建议
什么是您的系统CCSID?什么CCSID是ODBC作业'QZDASOINIT'运行的?交互式'QPADEV'作业使用什么CCSID?该程序编译的是什么CCSID? – jmarkmurphy
我们可能正在查看这里没有正确传递的变量。 考虑使用varchar&integer inout来创建你的程序。然后让程序把变量放到正确的大小上来调用你的CL程序等等。您可能会惊喜地发现通过odbc等方式调用它们非常容易。 Varchar和整数可以作为常量从调用过程中传递。 – danny117