仅 returns -1 时对 Oracle 存储过程进行故障排除
Troubleshoot Oracle Stored Procedure when it only returns -1
我有一个存储过程,当我直接在数据库中手动测试它时,它可以工作。
该程序没有 return 任何内容。而且由于我手动测试时它工作正常,所以我不会在这里展示它。
但是当我从代码调用它时,我得到 return 值 -1,我理解为“出了点问题”。
command.CommandText = Properties.Settings.Default.OracleProcedureNewCable;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.BindByName = true;
command.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, ParameterName = "p_tag_id", Value = (object)cable.TagId ?? DBNull.Value });
return command.ExecuteNonQuery();
System.Data.Common.DbCommand.ExecuteNonQuery returned -1
设置断点并没有给我太多关于为什么会出错的信息。
在这种情况下我该如何解决?
提前致谢!
when I am calling it from the code, I am getting the return value -1, which I understand as "something went wrong".
这是不正确的。
"对于 UPDATE、INSERT 和 DELETE 语句,return 值是受命令影响的行数。对于所有其他类型的语句,return 值是 -1。 “
当出现问题时会抛出异常。
而 Oracle 存储过程甚至没有 return 值。它们可以有输出参数,包括带有输出 sysrefcursor 参数的结果集,但它们没有 return 值。
我有一个存储过程,当我直接在数据库中手动测试它时,它可以工作。 该程序没有 return 任何内容。而且由于我手动测试时它工作正常,所以我不会在这里展示它。
但是当我从代码调用它时,我得到 return 值 -1,我理解为“出了点问题”。
command.CommandText = Properties.Settings.Default.OracleProcedureNewCable;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.BindByName = true;
command.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, ParameterName = "p_tag_id", Value = (object)cable.TagId ?? DBNull.Value });
return command.ExecuteNonQuery();
System.Data.Common.DbCommand.ExecuteNonQuery returned -1
设置断点并没有给我太多关于为什么会出错的信息。 在这种情况下我该如何解决?
提前致谢!
when I am calling it from the code, I am getting the return value -1, which I understand as "something went wrong".
这是不正确的。
"对于 UPDATE、INSERT 和 DELETE 语句,return 值是受命令影响的行数。对于所有其他类型的语句,return 值是 -1。 “
当出现问题时会抛出异常。
而 Oracle 存储过程甚至没有 return 值。它们可以有输出参数,包括带有输出 sysrefcursor 参数的结果集,但它们没有 return 值。