(學)如何在Oracle中一次執行多條sql語句

隊長同窗原來的地址:https://www.cnblogs.com/teamleader/archive/2007/05/31/765943.html
隊長同窗原來的描述:html

有時咱們須要一次性執行多條sql語句,而用來更新的sql是根據實際狀況用代碼拼出來的
解決方案是把sql拼成下面這種形式:sql

begin 
update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086';
update TB_VG set seq = 2, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20992' and train_id = '0233110';
end;編碼

總結以下:
以begin開始,以end;結尾(end後的分號不能省),中間的每一個sql語句要以分號;結尾

在實際編碼中,發現即便這樣也會有錯誤發生,把sql語句中的換行符替換成空格就能夠了
比較穩妥的編碼方式是:
一、以正常的方式編寫sql,根據閱讀與編寫的須要,中間確定會有換行符
二、在執行以前進行替換:strSql = strSql.Replace("\r\n", " ").Replace('\n', ' ');

若是不採用這種方式,可能的異常有:spa

ORA-00933: SQL 命令未正確結束(若是sql沒有以分號結尾)
ORA-00911: 無效字符(若是未加begin 和 end)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 "end-of-file"在須要下列之一時:......(若是end後面沒有;分號)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 ""在須要下列之一時:......(語句之間有換行符)

如下是我補充的:
(看到Replace參數中那個紅色的   \   了嗎?) ,少了這個不行,@隊長,你害了很多人呀^_^!htm

相關文章
相關標籤/搜索