[ORACLE] ORA-01036: illegal variable name/number
錯誤概述
變數名稱/號碼無效。
錯誤訊息
Oracle Error: ORA-01036
Error Description:
Illegal variable name/numberError Cause:
Unable to find bind context on user side.Action:
Make sure that the variable being bound is in the sql statement.
情境說明
轉載 [ASP.NET][Oracle] ORA-01036: 變數名稱/號碼無效 處理方法:
最近在串Oracle跟MS Server真的是一個頭兩個大
Oracle平常基本上很少用到,所以常常卡在這,這邊記錄一下一些要注意的事項
使用 Parameters 的參數名稱
MS Server:
CommandString = "select * from User where Name=@Name"
myCommand.Parameters.AddWithValue("@Name", "Arvin")
Oracle:
CommandString = "select * from User where Name=:Name"
myCommand.Parameters.AddWithValue(":Name", "Arvin")
註:
1.Oracle需使用 : 來帶參數名稱,但是在Parameters帶參數名稱時 : 也可以不用打,因為也會自動幫你加上
2.Oracle在塞Parameters時,如CommandString裡有的參數才能夠塞不然會出現 ORA-01036: 變數名稱/號碼無效 這種錯誤
補充
我這邊遇過 2 種情況會觸發 ORA-01036
1.參數名稱須為 :param 而不是 @param 格式
2.參數有 AddWithValue,但是語法裡面沒有用到
例如:
strDBInsert = "INSERT INTO tableA(A, B) VALUES (:A, :B)";
sqlCmd.Parameters.AddWithValue(":A", 0);
sqlCmd.Parameters.AddWithValue(":B", 0);
sqlCmd.Parameters.AddWithValue(":C", 0);
sqlCmd.ExecuteNonQuery();
參考資料
[ASP.NET][Oracle] ORA-01036: 變數名稱/號碼無效 處理方法
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權,文章歡迎轉載,請註明出處,謝謝~~~