0
我返工遺留代碼,並來到這個查詢:ORA-01036改寫一個Oracle插入命令
sqlDS.InsertCommand = "INSERT INTO SCHEMA.TABLE " +
"(ID, DATUM, ID_STATE, G_AM, G_VON, DATUM_BEW) " +
"VALUES (" + ((strukturen.Login)Session["svar_bew"]).ID_Bew.ToString() +
", TO_DATE('" + _datum + "', 'DD.MM.YYYY HH24:MI:SS'), 2, TO_DATE('" + lbl_bew.Text +
"', 'DD.MM.YYYY'), 'ID" + ((strukturen.Login)Session["svar_bew"]).ID_Bew.ToString() +
"', TO_DATE('" + _datum + "', 'DD.MM.YYYY HH24:MI:SS'))";
其中一期工程,但我想這可憎改寫成paramerterized格式,obious原因。
現在,這是我迄今取得的進展:
sqlDS.InsertCommand = "INSERT INTO SCHEMA.TABLE (ID, DATUM, ID_STATE, G_AM, G_VON, DATUM_BEW) " +
"VALUES (:Id_Bew, TO_DATE(':Datum', 'DD.MM.YYYY HH24:MI:SS'), 2, TO_DATE(':BewAm', 'DD.MM.YYYY'), 'ID' || :Id_Bew, TO_DATE(':Datum', 'DD.MM.YYYY HH24:MI:SS'))";
sqlDS.InsertParameters.Add("Id_Bew", ((strukturen.Login)Session["svar_bew"]).ID_Bew.ToString());
sqlDS.InsertParameters.Add("Datum", _datum);
sqlDS.InsertParameters.Add("BewAm", lbl_bew.Text);
這是有問題的表:
COLUMN | TYPE
-----------------------
ID | NUMBER
DATUM | DATE
/* Columns | ommited */
ID_STATE | NUMBER
G_AM | DATE
G_VON | CHAR(10 BYTE)
DATUM_BEW | DATE
變量遵循沒有固定的模式還沒有,所以他們在德國,從來沒有心靈被宣佈在這種情況下。 問題是,這個新的代碼現在拋出一個ORA-01036的,我懷疑這是在此位置:
'ID" + ((strukturen.Login)Session["svar_bew"]).ID_Bew.ToString()
- >'ID' || :Id_Bew
在原來的SQL查詢字符串「ID」被串連帶有一個從會話變量中拉出的數字ID。我的懷疑是,我在參數化查詢中將它錯誤地串聯起來,並且破壞了語法。
問題是:如何解決此錯誤並將此插入命令轉換爲正確的格式?
謝謝。奇蹟般有效。 – Marco 2014-10-07 13:07:32