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 = *e("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: 出現符號 ""在需要下列之一時:。。(語句之間有換行符)
如何一次插入多條記錄的SQL語句
在使用SQL數據庫的時候,我們也許會需要一次像數據庫中添加多條記錄,那么我們可以使用SQL語句來實現,該語句具體如下:
--添加一條記錄
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)
--添加多條記錄
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8
--從另外的一張表中讀取多條數據添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA
--從其他的多張表中讀取數據添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA WHERE a=1
UNION ALL
SELECT a,b,c FROM tableB WHERE a=2
上邊代碼中的into都可以省略!
上邊代碼中的union all如果換成union,則相同記錄只插入一次,不會重復插入。
另外一種方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用這種方法了。
INSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')
create table [TEST]
(
[NUM_ID] int primary key
)
go
declare @temp int
set @temp=1;
while @temp
如何使用一條SQL語句,插入多條記錄
用insert 和select 組合語句
例子如下:
數據插入Sales表:
INSERT INTO Sales(EmployeeID,ProductID,SupplierID,CustomerID,
OrderDate,UnitPrice,Total,Quantity,Discount)
SELECT *eeID, *tID, *erID,
*erID, *ate, *ice,
*ty**ice*(*nt)Total,
*ty, *nt
from Orders o,[Order Details] od, Employees e,
Products p, Suppliers s, Customers c
where (*D = *D) and
(*eeID = *eeID) and
(*erID = *erID) and
(*tId = *tID) and
(*erID = *erID);
多條sql語句如何拼接
SQL語句拼接一般使用【union all】和【union】
兩者的區別是:
【union all】:顯示多條語句里的全部記錄;
【union】:顯示多條語句里的不重復的記錄,也就是有DIstinct的功效;
【union all】示例:
select '2016-02-06' date_time union all
select '2016-02-14' union all
select '2016-06-12' union all
select '2016-09-18' union all
select '2016-10-09' union all
select '2016-10-09'結果為6行
【union】示例:
select '2016-02-06' date_time union all
select '2016-02-14' union all
select '2016-06-12' union all
select '2016-09-18' union all
select '2016-10-09' union all
select '2016-10-09'結果為5行