0
在執行cmd.executenonquery() 我在做什麼錯在這裏獲得「不是所有variablesbound錯誤」
OracleCommand cmd = con.CreateCommand();
cmd.BindByName = true;
try
{
if (unsetDefaultViewId != 0)
{
cmd.CommandText = "UPDATE WI_VIEWUSER SET DEFAULT_FLAG = "
+ " CASE "
+ " WHEN SEC_USR_ID = :p_userid AND VIEW_ID = :p_unsetDefviewId THEN 'N' "
+ " WHEN SEC_USR_ID = :p_userid AND VIEW_ID = :p_setDefViewId THEN 'Y' "
+ " ELSE DEFAULT_FLAG "
+ " END ";
cmd.Parameters.Add(new OracleParameter("p_setDefViewId",OracleDbType.Int32)).Value = unsetDefaultViewId;
}
else
{
cmd.CommandText = "UPDATE WI_VIEWUSER SET DEFAULT_FLAG = 'Y' WHERE VIEW_ID = :p_setDefViewId and SEC_USR_ID = :p_userid";
}
cmd.Parameters.Add(new OracleParameter("p_userid", OracleDbType.Int32)).Value = userid;
cmd.Parameters.Add(new OracleParameter("p_setDefViewId",OracleDbType.Int32)).Value = setDefaultViewId;
//getting error here
cmd.ExecuteNonQuery();
cmd.CommandText = "UPDATE WI_VIEW SET CREATED_DATE = sysdate WHERE VIEW_ID = :p_setDefViewId" ;
cmd.ExecuteNonQuery();
transaction.Commit();
感謝指出我的錯誤更多的事情爲第二個更新語句我需要再次添加參數之前運行第二個executenonquery因爲我得到錯誤非法變量名稱/編號 – Yogesh
@Yogesh不,因爲':unsetDefviewId'在聲明中沒有提到,你不需要在'else'分支中爲它添加參數。這兩個語句共享':p_userid'和':p_setDefViewId',所以在'else'後面設置它們也是正確的。 – dasblinkenlight
對不起,第三次更新導致這是造成問題,因爲我已經在cmd setdefviewid參數我不能重複它在第三次更新聲明,但它給了我錯誤 – Yogesh