我创建了一个包含两个输入和一个输出的虚拟包。保存时我应该获得“SUCCESS”,但它会返回“SU” Oracle 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();
}
当应用程序托管在服务器中时会发生问题。但是我在源代码中运行时工作正常。 环境细节:oracele 12c,框架3.5,iis 10.
答案 0 :(得分:0)
在对32位版本的Odac运行64位IIS应用程序时,我遇到过类似的问题。确保这些匹配。
我和Camilio一起讨论了finally块中的那个事务。并确保关闭连接或者您必须获得ORA-1000例外。
答案 1 :(得分:0)
为什么不尝试接近这个......
public string SaveLoad(DataGL.ScheduledMaintenance objmaster)
{
try
{
OracleConnection connection = this.AppConnection;
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand cmd = new OracleCommand("PKG_VHSCHDULEMAINTENANCE.USP_SAVE", connection, transaction);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter parameter = new OracleParameter("p_HostBranchId",OracleType.Number);
parameter.Value = objmaster.intBranchId;
cmd.Parameters.Add(parameter);
OracleParameter parameter = new OracleParameter("p_UserId",OracleType.Number);
parameter.Direction = ParameterDirection.Output;
parameter.Value = objmaster.intUserId;
cmd.Parameters.Add(parameter);
OracleParameter parameter = new OracleParameter("p_OutMsg",OracleType.VarChar,100);
parameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(parameter);
cmd.ExecuteNonQuery();
string strResult = "";
strResult = cmd.Parameters["p_OutMsg"].Value.ToString();
connection.CommitTransaction();
return strResult;
}
catch (Exception exc)
{
}
finally
{
connection.close();
}
答案 2 :(得分:0)