问题描述
我想对运行于IBM iSeries存储过程运行AS400和得到上述错误在我的称号。
当我输入执行从系统iNavigator工具存储过程的下面,它运行良好:
CALL QS36F.HH189P('1','1','')
第一个参数方向被存储的过程作为输入,第二输出,以及第三输出作为中定义
问题是,当我尝试从净$ C $的存储过程C设置的参数。有人可以帮我吗?
我的参数列表设置如下:
DB2Command.Parameters.Add(P_STRRRN,iDB2DbType.iDB2Char,10);
。DB2Command.Parameters [P_STRRRN]方向= System.Data.ParameterDirection.Input;
。DB2Command.Parameters [P_STRRRN]值= strRRN;
DB2Command.Parameters.Add(P_LSTRRN,iDB2DbType.iDB2Char,10);
。DB2Command.Parameters [P_LSTRRN] =价值的String.Empty;
。DB2Command.Parameters [P_LSTRRN]方向= System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add(P_ERRMSG,iDB2DbType.iDB2Char,70);
。DB2Command.Parameters [P_ERRMSG] =价值的String.Empty;
。DB2Command.Parameters [P_ERRMSG]方向= System.Data.ParameterDirection.Output;
解决方案
不得不宣布在CommandText如下:
字符串cmdtextstring =CALL QS36F.HH189P+('+ strRRN +?,?,);
只好设置参数如下:
DB2Command.Parameters.Add(P_LSTRRN,iDB2DbType.iDB2Char,10);
。DB2Command.Parameters [P_LSTRRN] =价值的String.Empty;
。DB2Command.Parameters [P_LSTRRN]方向= System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add(P_ERRMSG,iDB2DbType.iDB2Char,70);
。DB2Command.Parameters [P_ERRMSG] =价值的String.Empty;
如果您传递的PARMS为字符串常量,那么在这里就一个OUT或INOUT值返回到? DB2期待你调用程序的方式,它可以返回到值的变量。
I'm trying to run a stored procedure against an IBM iSeries running AS400 and getting the above error in my title.
When I type in the following to execute the stored procedure from the System iNavigator tool, it runs fine:
CALL QS36F.HH189P('1','1','')
The first parameter direction is defined in the stored procedure as input, the second output, and the third as output.
Problem is when I try to run the stored procedure from .Net code setting up the parameters. Can someone please help me?
My parameter list is set up as follows:
DB2Command.Parameters.Add("P_STRRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_STRRRN"].Direction = System.Data.ParameterDirection.Input;
DB2Command.Parameters["P_STRRRN"].Value = strRRN;
DB2Command.Parameters.Add("P_LSTRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_LSTRRN"].Value = string.Empty;
DB2Command.Parameters["P_LSTRRN"].Direction = System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add("P_ERRMSG", iDB2DbType.iDB2Char, 70);
DB2Command.Parameters["P_ERRMSG"].Value = string.Empty;
DB2Command.Parameters["P_ERRMSG"].Direction = System.Data.ParameterDirection.Output;
RESOLUTION
Had to declare the commandtext as following:
string cmdtextstring = "CALL QS36F.HH189P" + "('" + strRRN + "',?,?)";
Had to set up the parameters as following:
DB2Command.Parameters.Add("P_LSTRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_LSTRRN"].Value = string.Empty;
DB2Command.Parameters["P_LSTRRN"].Direction = System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add("P_ERRMSG", iDB2DbType.iDB2Char, 70);
DB2Command.Parameters["P_ERRMSG"].Value = string.Empty;
If you are passing the parms as string constants, then where would a OUT or INOUT value be returned to? DB2 is expecting you to call the procedure in a way that it can return values into your variables.
这篇关于SQL0469 IN,OUT,或INOUT无效的过程参数2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!