【发布时间】:2018-09-21 09:54:51
【问题描述】:
我创建了一个包含两个输入和一个输出的虚拟包。保存时我应该得到“SUCCESS”,但它返回“SU”。
甲骨文SP
PROCEDURE savedetail ( p_msg OUT VARCHAR2,
inputs...
) begin p_msg := 'SUCCESS'; END;
C#代码
public string SaveLoad(DataGL.ScheduledMaintenance objmaster)
{
try
{
this.AppConnection.OpenConnection();
this.AppConnection.BeginTransaction();
cmd = this.AppConnection.Connection.CreateCommand();
cmd.Transaction = this.AppConnection.Transaction;
cmd.CommandText = "PKG_VHSCHDULEMAINTENANCE.USP_SAVE";
cmd.CommandType = CommandType.StoredProcedure;
Parameter = cmd.CreateParameter();
Parameter.ParameterName = "p_HostBranchId";
Parameter.OracleType = OracleType.Number;
Parameter.Value = objmaster.intBranchId;
cmd.Parameters.Add(Parameter);
Parameter = cmd.CreateParameter();
Parameter.ParameterName = "p_UserId";
Parameter.OracleType = OracleType.Number;
Parameter.Value = objmaster.intUserId;
cmd.Parameters.Add(Parameter);
Parameter = cmd.CreateParameter();
Parameter.ParameterName = "p_OutMsg";
Parameter.OracleType = OracleType.VarChar;
Parameter.Size = 100;
Parameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(Parameter);
cmd.ExecuteNonQuery();
string strResult = "";
strResult = cmd.Parameters["p_OutMsg"].Value.ToString();
return strResult;
}
catch (Exception exc)
{
}
finally
{
this.AppConnection.CommitTransaction();
}
应用程序托管在服务器中时会出现问题。但是当我在源代码中运行时它工作正常。 环境细节:oracle 12c,framework 3.5,iis 10。
【问题讨论】:
-
你试过调试它,我猜?我在这里看到的一个危险信号是一个空的 catch 块;结果不明的秘诀。
-
为什么要在 finally 块中提交事务?你不知道那里是否发生了错误
-
@rory.ap 感谢您的回复。是的,我尝试使用应用程序源进行调试,但在使用托管应用程序时我没有遇到任何问题,我得到了那个错误。我使用 catch 块来捕获错误日志。我暂时删除了它。捕获(异常前)
-
@camilo 感谢您的回复。实际上这是所有页面中使用的常用方法。在那个方法中,我正在关闭连接。