2013-01-08 29 views
2

我有一個的Oracle 11g表具有以下列名和類型:參數的OracleCommand的更新到Oracle表使用ODP.NET /綁定變量?

ID VARCHAR2(32 BYTE) 
VERSION VARCHAR2(12 BYTE) 

我想獲得綁定變量到一個Oracle參數命令工作了Update語句使用ODP.NET和C#這個表,但我沒有運氣。這裏是我使用的代碼:

string constr = gconstr + "; Data Source=" + db; 
OracleConnection con = new OracleConnection(constr); 
con.Open(); 
ddiId = "WS_5043"; 
ddiVer = "1.0.3"; 

string UPDATE_CLOB_QUERY = "UPDATE :ddiTable SET version=:ddiVer WHERE id=:ddiId"; 

Oracle.DataAccess.Types.OracleXmlType ret; 
OracleCommand oracleCommand2 = new OracleCommand(UPDATE_CLOB_QUERY, con); 
oracleCommand2.Parameters.Clear(); 
oracleCommand2.Parameters.Add("ddiId", OracleDbType.Varchar2, ParameterDirection.Input).Value = ddiId; 
oracleCommand2.Parameters.Add("ddiTable", OracleDbType.Varchar2, ParameterDirection.Input).Value = ddiTable; 
oracleCommand2.Parameters.Add("ddiVer", OracleDbType.Varchar2, ParameterDirection.Input).Value = ddiVer; 
oracleCommand2.ExecuteNonQuery(); 
oracleCommand2.Dispose(); 

當我運行在VS2010上面的代碼中,我得到以下Oracle錯誤:

ORA-01036: illegal variable name/number 

然而,當我刪除綁定變量的聲明在SQL那麼上述作品即

string UPDATE_CLOB_QUERY = "UPDATE wstable SET version='1.0.2' WHERE id='WS_5043'"; 

我在做什麼錯?

我需要知道如何讓綁定變量,如上圖所示爲要求參數Oracle命令與SQL更新工作等命令,因爲我將開始最終在其他表更新大型的CLOB(和連接爲在字符串中的CLOB SQL當然會導致大小限制錯誤)。所以讓這個工作成爲第一個勝利。

+1

我不認爲你可以使用一個參數表名。 – mgnoonan

+1

我確實發現[這個答案在網站的其他地方] [1],可以幫助你。 [1]:http://stackoverflow.com/questions/1179652/how-to-use-a-variable-in-oracle-script-for-the-table-name – mgnoonan

回答

2

在該線;

oracleCommand2.Parameters.Add("ddiTable", OracleDbType.Varchar2, ParameterDirection.Input).Value = ddiTable; 

實際上,你嘗試添加作爲參數的表名(ddiTable)。你不能那樣做。將查詢表名稱作爲參數添加沒有意義。如果你想用3個參數使用Parameters.Add()方法,你必須使用如下參數:

public OracleParameter Add(
    string parameterName, 
    OracleType dataType, 
    int size 
) 

這是重載方法只適合。採用Parameters.Add()方法的第三參數類型ParameterDirection.Input沒有超載。

I need to know how to get bind variables and parameterized Oracle commands working with SQL Update commands such as the one above as a requirement.

我可以建議你閱讀這些;

+1

優秀,感謝花時間指引我走向正確的方向。 – fuzzyanalysis

相關問題