ORA 00911無效字元報錯

2022-05-18 06:34:24 字數 1615 閱讀 2295

今天在修改缺陷時遇到乙個問題,更新資料庫欄位時一直報錯:ora-00911。sql指令碼如下:

update mbp_doc set cstate=

'200

'where cid=

'123';

update mbp_doc set cstate=

'200

'where cid=

'234';

update mbp_doc set cstate=

'200

'where cid=

'456

';

該指令碼在資料庫中可以執行,但是從程式中去訪問資料庫修改值時就會報錯。

報錯的原因在於,更新oracle資料庫中的字段時,如果一次執行多條語句,就要將這些語句用 begin end;包起來。如上的指令碼應改寫為:

begin

update mbp_doc set cstate=

'200

'where cid=

'123';

update mbp_doc set cstate=

'200

'where cid=

'234';

update mbp_doc set cstate=

'200

'where cid=

'456';

end;

如果只執行一條update語句

update mbp_doc set cstate=

'200

'where cid=

'123

';

這樣也是會報ora-00911錯.此時,就應該去掉末尾的分號;

在程式中,操作的最後一句應該是不加分號的。加了反而會報錯。只有一條語句時應該去掉分號,如下:

update mbp_doc set cstate=

'200

'where cid=

'456

'

總結:1 程式中訪問oracle資料庫的時候,有以下幾種情況,都是正確的:

//1 執行一條語句,不加分號

update mbp_doc set cstate=

'200

'where cid=

'456

'

//2 執行一條語句,加分號,加begin  end;

begin

update mbp_doc set cstate=

'200

'where cid=

'456';

end;

//3 執行多條語句,每句末尾加分號,加begin end

begin

update mbp_doc set cstate=

'200

'where cid=

'456';

update mbp_doc set cstate=

'200

'where cid=

'123';

end;

也就是,任何情況下,每一句後面加上分號,然後整個操作用begin end;包起來,都是不會出錯的。

ORA 00911 無效字元問題

我今天寫jdbc插入資料庫資料時出現ora 00911 無效字元問題,我把sql打到控制台上面,然後copy到sql puls中是可以插入資料的,但是在eclipse中執行就報ora 00911 無效字元的錯誤,我查了一下,我的是類似這種的insert into tablea aaa values ...

ORA 00911 無效字元 問題和解決

我今天寫jdbc插入資料庫資料時出現ora 00911 無效字元問題,我把sql打到控制台上面,然後copy到sql puls中是可以插入資料的,但是在eclipse中執行就報ora 00911 無效字元的錯誤,我查了一下,我的是類似這種的insert into tablea aaa values ...

ORA 00911錯誤及解決方法

自 2007年的。今天在開發中遇到了乙個問題,被困擾了好找時間。事情是這樣的,因為我們現在做的系統資料庫是用oracle,而我又喜歡凡是和資料庫 有關的語句先在pl sql developer裡面測試好了,再往程式裡面寫。而今天做的 裡 面涉及到查詢庫裡面現在有沒有使用者輸入的表所對應的同義詞。所以...