【发布时间】:2019-10-31 14:05:39
【问题描述】:
我正在调用一个在数据库中插入记录的存储过程,但我想知道如何判断存储过程是否正确执行?为了知道插入了多少,可以从网络上验证吗?
我添加了我用来调用存储过程的代码:
public void EjecutaSP(string NomSP, ParametroOracle[] Parameter, string OracleCon)
{
OracleCon = Rijndael.Desencriptar(strOracleCon);
OracleConnection oracleCon = new OracleConnection(OracleCon);
try
{
OracleCommand cmd = new OracleCommand(NomSP, oracleCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("DateProcess", "OracleType.VarChar").Value = "'2019-05-29'";
cmd.Parameters.Add("EmployeeGroup", "OracleType.Number").Value = 555501;
cmd.Parameters.Add("IdEmployee", "OracleType.Number").Value = 555501;
cmd.Parameters.Add("NomEmployee", "OracleType.VarChar").Value = "'Espanol'";
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataTable dtTable = new DataTable();
da.Fill(dtTable);
}
catch (Exception ex)
{
string strSP = NomSP;
int intPar = Parameter.Length;
for (int i = 0; i < intPar; i++)
strSP += " ," + Parameter[i].Valor;
Exception _ex = new Exception("Error en SP: " + strSP, ex.InnerException);
throw _ex;
}
finally
{
oracleCon.Close();
oracleCon.Dispose();
}
}
运行存储过程的进程已经运行,我想知道是否有任何句子可以帮助了解存储过程是否正确执行,因为存储过程没有返回任何特殊数据。
【问题讨论】:
-
您可以简单地在存储过程中返回插入的记录并检查是否为空。
-
为什么将日期作为 varchar 传递?那些
'是否应该在"'Espanol'"中? -
如果您不使用,请在 SP 中使用 try catch 并添加一个 out 参数,并在成功和数据库异常/失败的情况下返回一些唯一值。我通常这样做,从来没有遇到过麻烦。并在你的 c# 中检查它。
标签: c# oracle stored-procedures odp.net