我有一个存储过程,当我在数据库中手动和直接测试它时,它可以工作。该程序没有返回任何内容。由于它在我手动测试时运行良好,所以我不会在这里显示它。
但当我从代码中调用它时,我会得到返回值-1,我将其理解为"0";出了问题";。
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
设置断点并没有给我提供太多关于它出错原因的信息。在这种情况下,如何进行故障排除?
提前感谢!
当我从代码中调用它时,我得到的返回值为-1,我将其理解为"出了问题";。
这是不正确的。
"对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值为-1;
DbCommand.ExecuteNonQuery
当出现问题时,它将抛出异常。
而且Oracle存储过程甚至没有返回值。它们可以有输出参数,包括带有输出sysrefcursor参数的结果集,但它们没有返回值。