对仅返回-1的Oracle存储过程进行故障排除

我有一个存储过程,当我手动直接在数据库中对其进行测试时,该存储过程将起作用。 该过程不返回任何内容。而且由于在我手动测试时它可以正常工作,所以在这里不显示它。

但是当我从代码中调用它时,我得到的返回值为-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返回-1

设置断点并没有给我太多有关为什么出错的信息。 在这种情况下该如何解决?

谢谢!

iCMS 回答:对仅返回-1的Oracle存储过程进行故障排除

当我从代码中调用它时,我得到的返回值为-1,我理解为“出了点问题”。

那是不正确的。

“对于UPDATE,INSERT和DELETE语句,返回值为受命令影响的行数。对于所有其他类型的语句,返回值为-1。”

DbCommand.ExecuteNonQuery

出问题时会抛出异常。

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

本文链接:https://www.f2er.com/1960403.html

大家都在问