I've been getting this error calling from my Asp.Net C# app. While executing it in PL/Sql everything "just works"...
I have stepped through the code and verified the data is being passed in, and also see that even though I receive this error, the database is updated!
This is the C# code:
protected void gvHeader_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string sp = "VNETAPP.ECOS_APPLICATION_API.STAGE_ACTIVE_UPDATE_OBJ";
string sCon = ConfigurationManager.ConnectionStrings["DSN_Ecos"].ConnectionString;
try
{
using (OracleConnection conn = new OracleConnection(sCon))
{
using (OracleCommand cmd = new OracleCommand(sp, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.BindByName = true;
cmd.Parameters.Add(new OracleParameter("p_object_id_", OracleDbType.Decimal, System.Data.ParameterDirection.Input)).Value = e.Keys["OBJECT_ID"];
cmd.Parameters.Add(new OracleParameter("p_study_id_", OracleDbType.Varchar2, System.Data.ParameterDirection.Input)).Value = e.NewValues["STUDY_ID"];
cmd.Parameters.Add(new OracleParameter("p_study_name_", OracleDbType.Varchar2, System.Data.ParameterDirection.Input)).Value = e.NewValues["STUDY_NAME"];
cmd.Parameters.Add(new OracleParameter("p_pricebook_", OracleDbType.Varchar2, System.Data.ParameterDirection.Input)).Value = e.NewValues["ORDER_PRICEBOOK"];
cmd.Parameters.Add(new OracleParameter("p_reviewcode_", OracleDbType.Decimal, System.Data.ParameterDirection.Input)).Value = e.NewValues["REVIEW_CODE"];
cmd.Parameters.Add(new OracleParameter("p_user_name_", OracleDbType.Varchar2, System.Data.ParameterDirection.Input)).Value = "john.croson";
conn.Open();
int res = cmd.ExecuteNonQuery();
}
}
gvHeader.DataBind();
}
catch (Exception ex)
{
ShowResponsePopup("Error", "gvHeader_RowUpdating threw error : " + ex.ToString(), this);
}
}
PROCEDURE STAGE_ACTIVE_UPDATE_OBJ
(
p_object_id_ IN NUMBER,
p_study_id_ IN VARCHAR2,
p_study_name_ IN VARCHAR2,
p_pricebook_ IN VARCHAR2,
p_reviewcode_ IN NUMBER,
p_user_name_ IN VARCHAR2
)
IS
BEGIN
UPDATE ECOS_STAGE_ACTIVE_TAB
SET STUDY_ID = p_study_id_,
STUDY_NAME = p_study_name_,
ORDER_PRICEBOOK = p_pricebook_,
REVIEW_CODE = p_reviewcode_,
LAST_MODIFIED_DATE = SYSDATE,
LAST_MODIFIED_USER = p_user_name_
WHERE OBJECT_ID = p_object_id_;
-- do log stuff
/* REFRESH THE OBJECT TO TRIGGER ALL VALIDATION */
STAGE_ACTIVE_REFRESH_OBJ(p_object_id_);
END STAGE_ACTIVE_UPDATE_OBJ;
I'm at a loss as to why this fails, and really don't want to resort to OleDb...