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

2021-06-19 22:10:53 字數 1791 閱讀 8340

有時我們需要一次性執行多條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語句中的換行符替換成空格就可以了

比較穩妥的編碼方式是:

1、以正常的方式編寫sql,根據閱讀與編寫的需要,中間肯定會有換行符

2、在執行之前進行替換:strsql = strsql.replace("r\n", " ").replace('\n', ' ');

如果不採用這種方式,可能的異常有:

ora-00933: sql 命令未正確結束(如果sql沒有以分號結尾)

ora-00911: 無效字元(如果未加begin 和 end)

ora-06550: 第x行, 第***列: pls-00103: 出現符號 "end-of-file"在需要下列之一時:......(如果end後面沒有;分號)

ora-06550: 第x行, 第***列: pls-00103: 出現符號 ""在需要下列之一時:......(語句之間有換行符)

***文章二

在上面的每一步,先建立乙個oracleconnection,然後再建立乙個oraclecommand,再執行executenonquery()方法,接著oraclecommand呼叫dispose()方法,最後oracleconnection呼叫close()方法。這個過程在上面的過程中執行3此,大家知道對資料庫的連線操作是很費時間的,有沒有比較好的辦法呢?答案是有的。

那就是利用ps/sql。

begin

delete from replys where userid=5;--刪除回帖

delete from articles where userid=5;--刪除發帖

delete from users where userid=5;--刪除使用者

end;

那麼整個過程可以這麼寫:

private void deleteuser(int userid)

;delete from articles where userid=;delete from users where userid=;end;";

deletesql = string.format(deletesql, userid, userid, userid);

oracleconnection connection = new oracleconnection(connectionstring);

connection.open();

oraclecommand cmd = new oraclecommand(deletesql, connection);

cmd.dispose();

connection.close();

}這樣就能在乙個connection中一次執行完所有操作了,當然,這個**中沒有考慮事務處理,實際使用中大家自行考慮酌情新增。

如何在perl中一次執行多條shell命令

在perl中執行shell指令碼命令一般使用system 傳入乙個shell命令給system 如果執行多條shell命令豈不是要執行多個system 那麼 如何通過system 同時執行多條shell命令呢?通過 或者 來合併多條命令,如下 cmd ls l cd home xyz ls l sy...

如何在GridView中一次性批量更新多行資料

假定有乙個product表,欄位有 id,name,quantity,我們要一次批量更新quantity的值 首先在gridview中,quantity列以templatefield顯示,其他的列屬性設為唯讀,把顯示格式設為textbox 在gridview下面新增乙個button控制項,定義onc...

在oracle中一次執行多條語句

工作中需要一次執行多條語句,本來想直接使用sql拼接成乙個字串進行批處理,原sql如下 string sql for int i 0 i 發現執行不了,經過查詢資料,發現oracle需要加begin end 字段才能執行多條語句。修改後的sql如下 begin string sql for int ...