9.不用游標的DML語句
不需要游標的DML語句有:查詢結果為單記錄的SELECT語句UPDATE(除了CURRENT形式的UPDATE)語句DELETE(除了CURRENT形式的DELETE)語句INSERT語句
(1)查詢結果為單記錄的SELECT語句這類語句的一般格式是:(主語言為PL/1)EXEC SQL SELECT目標列INTO主變量[空值標志]FROM基本表(或視圖)[WHERE條件表達式];SELECT語句從數據庫中找到符合條件的記錄,把結果放到主變量中。
(2)UPDATE語句
(3)DELETE語句
(4)INSERT語句
10.使用游標的DML語句
一般情況下SELECT語句的查詢結果是記錄的集合而不是單個記錄,為此需要用游標機制作為橋梁,把集合操作轉換為單記錄處理。與游標有關的語句有四個:
(1)定義游標。游標是與某一查詢結果相聯系的符號名。用DECLARE語句定義。這是一個說明語句。與游標相對應的SELECT語句這時并不執行。
(2)打開(OPEN)游標。打開游標語句使游標處于活動狀態。與游標相應的查詢語句被執行。游標指向查詢結果集中的第一個記錄之前。
(3)推進(FETCH)游標。把游標向前推進一個記錄,并把游標指向的當前記錄中的字段值取出,放到INTO子句后相應的主變量中。FETCH語句常常用于循環,以借助主語言功能逐一處理結果集中的數據。
(4)關閉(CLOSE)游標。關閉游標,使它不再和原來的查詢結果相聯系。關閉了的游標可以再次被打開,與新的查詢結果集相聯系。使用CURRENT形式的UPDATE和刪除語句應注意:
(1)若游標定義中的SELECT語句帶有UNION或ORDER BY子句,或者這個SELECT語句相當于定義了一個不可更新的視圖,則不能用這兩個更新語句。
(2)若使用CURRENT形式的UPDATE語句,則游標定義中要包括FOR UPDATE子句,指出更新的字段(SET子句中使用的字段)。因此,游標定義語句的一般格式為:EXEC SQL DECLARE游標名CURSOR FOR子查詢UNION子查詢…[FOR UPDATE OF字段名[,字段名]…|ORDER-BY-子句];
11.SQL的事務處理功能
(1)事務處理的概述所謂事務(Transaction)是指一系列動作的組合,這些動作被當作一個整體來處理。這些動作或者相繼都被執行,或者什么也不做。在數據庫中,一個動作是指一個SQL語句。事務是一組SQL語句組成的一個邏輯單位。要么這些SQL語句全部被按順序正確執行,要么在某SQL語句執行失敗時,按照用戶要求,取消已執行的SQL語句對數據庫中數據的修改。或者要么事務中SQL語句都被正確執行,完成該事務對數據庫中數據的所有操作;或者要么相當于一條SQL語句也未執行,數據庫數據未做任何改動。
(2)SQL語言的事務處理語句SQL語言有3條語句用于事務處理,它們是:
(1)Commit語句,對于正確執行了的事務進行提交,進行提交即對數據庫中數據的修改永久化。同時還釋放事務和封鎖,標志該事務結束。
(2)Save point語句,定義事務中的一個回滾保留點,它是事務恢復時的一個標記點。
(3)rollback語句,無論事務執行的當前位置在哪里,該語句的執行要么取消事務執行以來對數據庫的全部修改,要么取消至某個指定回滾點后對數據庫的全部修改。釋放自保留點之后的全部表或行的封鎖(沒有保留點,相當于回滾到事務開始處,終止該事務)。事務的恢復(回滾)是根據事務執行前保存下的當時數據庫狀態來實現的。一遇到rollback語句,就將數據庫中數據恢復到原來的狀態,相當于撤消事務中已執行了的SQL語句。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |