0
我在执行ODBC中的存储过程到DB2存储过程有多个输入和输出参数的数据库时遇到问题。如果我只在调用语句中的输入参数中指定?如下所示,我收到“SQL0440 - 未找到指定参数 * N中的例程XXXXXXX”。我已经改变了输出PARAMS为类型“返回值”或“输出”具有相同的结果。无法使用多输出参数从ODBC运行存储过程
这里是我的代码:
var paramList = new List<OdbcParameter>();
var param1 = new OdbcParameter("FldId", "SLPMEMST_MESLRY");
param1.OdbcType = OdbcType.Char;
param1.Direction = ParameterDirection.Input;
paramList.Add(param1);
var param2 = new OdbcParameter("ExtIndex",2346);
param2.OdbcType = OdbcType.Decimal;
param2.Direction = ParameterDirection.Input;
paramList.Add(param2);
var param3 = new OdbcParameter("LogCmt", "test here");
param3.Direction = ParameterDirection.Input;
param3.OdbcType = OdbcType.Char;
paramList.Add(param3);
var prmOut1 = new OdbcParameter("PlainText", OdbcType.Char, 32624);
prmOut1.Direction = ParameterDirection.InputOutput ;
var prmOut2 = new OdbcParameter("MsgId", OdbcType.Char, 7);
prmOut2.Direction = ParameterDirection.InputOutput;
var prmOut3 = new OdbcParameter("MsgText", OdbcType.Char, 80);
prmOut3.Direction = ParameterDirection.InputOutput;
var prmOut4 = new OdbcParameter("Errors", OdbcType.Char, 1);
prmOut4.Direction = ParameterDirection.InputOutput;
paramList.Add(prmOut1);
paramList.Add(prmOut2);
paramList.Add(prmOut3);
paramList.Add(prmOut4);
var sproc = "{? =call P_GetEncFld (?, ?, ?)}";
DAL.Common_AS400.RunNonQuery_Parameterized(sproc, paramList,CommonData.ConnectionStringCrypto);
public static void RunNonQuery_Parameterized(string SQLStatement, IEnumerable<OdbcParameter> parameters, string connectionString)
{
OdbcConnection oConn = new OdbcConnection(ConfigurationManager.ConnectionStrings[connectionString].ToString()) { ConnectionTimeout = 300 };
using (var oCmd = new OdbcCommand())
{
foreach (OdbcParameter param in parameters)
{
oCmd.Parameters.Add(param);
}
if (oConn.State != ConnectionState.Open) oConn.Open();
oCmd.CommandType = CommandType.Text;
oCmd.CommandText = SQLStatement;
oCmd.Connection = oConn;
oCmd.ExecuteNonQuery();
}
}
想法?