[ORACLE] ORA-01036: illegal variable name/number

[ORACLE] ORA-01036: illegal variable name/number

錯誤概述

變數名稱/號碼無效。

 

錯誤訊息

Oracle Error: ORA-01036

Error Description:
Illegal variable name/number

Error 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 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權,文章歡迎轉載,請註明出處,謝謝~~~