2013-04-26 30 views
0

甲骨文參數化查詢所以這是我一直得到的錯誤:ORA-01036:非法的變量名/編號從.net

所有我做的是試圖用這些值來更新表。值不爲空,參數中的每個變量都有值。

Query在Oracle(不帶參數)中執行得很好,但是當我添加參數時,它會給出ORA-01036:非法變量名稱/編號。

我已經試過幾乎所有東西,但沒有運氣!

using (OracleConnection con = new OracleConnection(cs)) 
      { 
      const string query = 
        @"UPDATE ASSOCIATED_CENTERS_INFO 
SET DIS_ASSOCIATED_BY = (SELECT ID FROM VC_ADMINISTRATORS WHERE USERNAME = ':USER'), 
DIS_ASSOCIATION_DATE = SYSDATE, 
ACTIVE_YN = 'N', 
NOTES = CONCAT(NOTES, '<br>' || SYSDATE || ' ' || (SELECT FIRSTNAME || ',' || LASTNAME FROM VC_ADMINISTRATORS WHERE USERNAME = ':USER') || ': ' || ':COMMENT') 
WHERE OSC_ID = :OSCID AND ASSOCIATED_OSC_ID = :ASSOCIATEDOSCID;"; 

       OracleCommand cmd = new OracleCommand(query, con); 
       cmd.CommandType=CommandType.Text; 

       cmd.Parameters.AddWithValue(":USER", userName); 
       cmd.Parameters.AddWithValue(":COMMENT", comment); 
       cmd.Parameters.AddWithValue(":OSCID", selectedIdOnMap); 
       cmd.Parameters.AddWithValue(":ASSOCIATEDOSCID", selectedIdOnListBox); 
       con.Open(); 
       cmd.ExecuteNonQuery(); 

}

回答

2

取下單引號括起來的一些參數補充說:

':USER', ':COMMENT' ... 
0

把所有的表名和列名加上引號: 「MY_TableName」: 像:

​​

並從參數中刪除引號。