日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句

發(fā)布時(shí)間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有時(shí)我們需要一次性執(zhí)行多條sql語(yǔ)句,而用來(lái)更新的sql是根據(jù)實(shí)際情況用代碼拼出來(lái)的

解決方案是把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;

總結(jié)如下:

以begin開(kāi)始,以end;結(jié)尾(end后的分號(hào)不能省),中間的每個(gè)sql語(yǔ)句要以分號(hào);結(jié)尾

在實(shí)際編碼中,發(fā)現(xiàn)即使這樣也會(huì)有錯(cuò)誤發(fā)生,把sql語(yǔ)句中的換行符替換成空格就可以了

比較穩(wěn)妥的編碼方式是:

1、以正常的方式編寫(xiě)sql,根據(jù)閱讀與編寫(xiě)的需要,中間肯定會(huì)有換行符

2、在執(zhí)行之前進(jìn)行替換:strSql = strSql.Replace("r\n", " ").Replace('\n', ' ');

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

ORA-00933: SQL 命令未正確結(jié)束(如果sql沒(méi)有以分號(hào)結(jié)尾)

ORA-00911: 無(wú)效字符(如果未加begin 和 end)

ORA-06550: 第x行, 第xxx列: PLS-00103: 出現(xiàn)符號(hào) "end-of-file"在需要下列之一時(shí):......(如果end后面沒(méi)有;分號(hào))

ORA-06550: 第x行, 第xxx列: PLS-00103: 出現(xiàn)符號(hào) ""在需要下列之一時(shí):......(語(yǔ)句之間有換行符)

[轉(zhuǎn)]文章二

在上面的每一步,先建立一個(gè)OracleConnection,然后再建立一個(gè)OracleCommand,再執(zhí)行ExecuteNonQuery()方法,接著OracleCommand調(diào)用Dispose()方法,最后OracleConnection調(diào)用Close()方法。這個(gè)過(guò)程在上面的過(guò)程中執(zhí)行3此,大家知道對(duì)數(shù)據(jù)庫(kù)的連接操作是很費(fèi)時(shí)間的,有沒(méi)有比較好的辦法呢?答案是有的。

那就是利用PS/SQL。

begin

delete from Replys where UserId=5;--刪除回帖

delete from Articles where UserId=5;--刪除發(fā)帖

delete from Users where UserId=5;--刪除用戶(hù)

end;

那么整個(gè)過(guò)程可以這么寫(xiě):

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();

}

這樣就能在一個(gè)Connection中一次執(zhí)行完所有操作了,當(dāng)然,這個(gè)代碼中沒(méi)有考慮事務(wù)處理,實(shí)際使用中大家自行考慮酌情添加。

總結(jié)

以上是生活随笔為你收集整理的oracle多条sql语句常量,如何在Oracle中一次执行多条sql语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。