我正在尝试针对运行AS400的IBM iSeries运行存储过程,并在我的标题中出现上述错误。
当我输入以下内容从System iNavigator工具执行存储过程时,它运行正常:
CALL QS36F.HH189P('1','1','')
第一个参数方向在存储过程中定义为输入,第二个输出和第三个作为输出。
问题是当我尝试从设置参数的.Net代码运行存储过程时。有人可以帮助我吗?
我的参数列表设置如下:
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;
必须将commandtext声明如下:
string cmdtextstring = "CALL QS36F.HH189P" + "('" + 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;
答案 0 :(得分:1)
如果您将parms作为字符串常量传递,那么OUT或INOUT值将返回到何处? DB2期望您以一种可以将值返回到变量中的方式调用该过程。