數據操作語言 (DML) 語句

數據操作語句(DML)語句在已存在的模式對象進行訪問和操作數據。DML語句不會隱私提交當前事務。以下是數據操作語言語句:

CALL
DELETE
EXPLAIN PLAN
INSERT
LOCK TABLE
MERGE
SELECT
UPDATE

SELECT語句是MDL語句的有限形式,它只能在數據庫中訪問數據。雖然它可以在查詢結果返回之前操作訪問數據,但是能在數據庫中操作數據存儲。

CALL和EXPLAIN PLAN只在動態執行的PL/SQL才支持。所有其他DML語句在PL/SQL都完全支持。

1.常用DML語句

下面主要介紹4種DML語句:INSERT、UPDATE、DELETE和MERGE

INSERT:向表中插入一條或者多條記錄。

UPDATE:更新一個表中的一行或者多行的一列或多列值。

DELETE:刪除表中一行或多行記錄。

MERGE:如果表中已有了指定列值的記錄行,就執行更新動作。如果沒有指定列值的記錄,就執行一個插入動作。

2.DML語句的遊標屬性

Oracle允許我們通過一些特殊的隱式遊標屬性訪問最後一次運行的隱式遊標的信息。記住隱式遊標屬性的值總是屬於最後一次執行的SQL語句,而不管隱式遊標是在一個塊中執行。

名字 描述
SQL%FOUND 如果有一行或則多行記錄被成功修改(包括創建、修改、刪除)返回TURE,否則返回FALSE
SQL%NOTFOUND 如果DML語句沒有修改任何行則返回TRUE,否則返回FALSE
SQL%ROWCOUNT 返回被DML語句修改的記錄行數
SQL%ISOPEN 對於隱式遊標(即DML語句)總是返回FALSE,因爲Oracle數據庫會自動打開和關閉這些遊標

 

3.DML語句特有的PL/SQL特性

假設在執行一個UPDATE或則DELETE操作後,需要根據處理結果進行更多的處理。要實現這個目標,沒必要在DML語句後面再用一個單獨的查詢語句,只需要在INSERT、UPDATE、DELETE或者MERGE語句中添加一個RETURNING語句,即可以直接把這些信息提取到一個變量中。使用RETURNING語句,可以減少網絡上的往返交互,消耗的服務器CPU時間會更少,並把應用程序所打開和管理的遊標數量最小化。

例如:

declare
  v_ename emp.ename%type;
  v_sal   emp.sal%type;
begin
  for rec in (select * from emp e where e.deptno = 10) loop
    update emp e
       set e.sal = e.sal * 1.5
     where e.empno = rec.empno
    returning e.ename, e.sal into v_ename, v_sal;
  end loop;
end;

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章