oracle多条sql语句常量,如何在Oracle中一次执行多条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語句中的換行符替換成空格就可以了
比較穩妥的編碼方式是:
1、以正常的方式編寫sql,根據閱讀與編寫的需要,中間肯定會有換行符
2、在執行之前進行替換:strSql = strSql.Replace("r\n", " ").Replace('\n', ' ');
如果不采用這種方式,可能的異常有:
ORA-00933: SQL 命令未正確結束(如果sql沒有以分號結尾)
ORA-00911: 無效字符(如果未加begin 和 end)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 "end-of-file"在需要下列之一時:......(如果end后面沒有;分號)
ORA-06550: 第x行, 第xxx列: 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)
{
string deleteSql = "begin delete from Replys where UserId={0};delete from Articles where UserId={1};delete from Users where UserId={2};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中一次執行完所有操作了,當然,這個代碼中沒有考慮事務處理,實際使用中大家自行考慮酌情添加。
總結
以上是生活随笔為你收集整理的oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle lms进程 内存,Orac
- 下一篇: oracle today函数,oracl