仅 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。 “

DbCommand.ExecuteNonQuery

当出现问题时会抛出异常。

而 Oracle 存储过程甚至没有 return 值。它们可以有输出参数,包括带有输出 sysrefcursor 参数的结果集,但它们没有 return 值。