【发布时间】:2011-06-20 15:11:45
【问题描述】:
我的场景:
helper = new OracleHelper();
helper.CreateAndOpenConnection();
//cmd = new OracleCommand("PCK_JOBS.ARRAY_INSERT", helper.OracleHelperConnection);
cmd = new OracleCommand("PCK_JOBS.SCALAR_INSERT", helper.OracleHelperConnection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.ArrayBindCount = 3;
var paramNames = new OracleParameter();
paramNames.ParameterName = "P_JOB_TITLE";
paramNames.Size = 3;
paramNames.OracleDbType = OracleDbType.Varchar2;
paramNames.Value = new string[3] { "1", "2", "3" };
cmd.Parameters.Add(paramNames);
paramNames = new OracleParameter();
paramNames.ParameterName = "O_JOB_ID";
paramNames.Size = 3;
paramNames.Direction = ParameterDirection.Output;
paramNames.OracleDbType = OracleDbType.Int32;
paramNames.Value = new int[3] { 0, 0, 0 };
cmd.Parameters.Add(paramNames);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception exc)
{
}
var outParams = cmd.Parameters[1];
当 PL-SQL 过程失败(例如插入第 2 行,因此 ExecuteNonQuery 捕获)时,我的输出参数 (outParams) 都设置为 0(初始化值),对于过程正确处理的行也是如此。
有没有办法正确处理这个问题?那么是否正确填充了部分 OUT 数组参数?
【问题讨论】:
标签: arrays oracle exception-handling odp.net data-binding