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