Oracle數(shù)據(jù)庫的DML語句功能介紹
以下的文章主要討論的是各種用于訪問Oracle數(shù)據(jù)庫的DML語句的結(jié)果的相關內(nèi)容的介紹。其中包括事務控制語句 、顯式游標 、使用游標 。等相關內(nèi)容的介紹,以下就是文章的具體內(nèi)容的介紹。
DML語句的結(jié)果
當執(zhí)行一條DML語句后,DML語句的結(jié)果保存在四個游標屬性中,這些屬性用于控制程序流程或者了解程序的狀態(tài)。當運行DML語句時,PL/SQL打開一個內(nèi)建游標并處理結(jié)果,游標是維護查詢結(jié)果的內(nèi)存中的一個區(qū)域,游標在運行DML語句時打開,完成后關閉。
隱式游標只使用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三個屬性.SQL%FOUND,SQL%NOTFOUND是布爾值,SQL%ROWCOUNT是整數(shù)值。SQL%FOUND和SQL%NOTFOUND
在執(zhí)行任何DML語句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在執(zhí)行DML語句后,SQL%FOUND的屬性值將是:
. TRUE :INSERT
. TRUE : DELETE和UPDATE,至少有一行被DELETE或UPDATE.
. TRUE :SELECT INTO至少返回一行
當SQL%FOUND為TRUE時,SQL%NOTFOUND為FALSE。
SQL%ROWCOUNT
在訪問Oracle數(shù)據(jù)庫中執(zhí)行任何DML語句之前,SQL%ROWCOUNT的值都是NULL,對于SELECT INTO語句,如果執(zhí)行成功,SQL%ROWCOUNT的值為1,如果沒有成功,SQL%ROWCOUNT的值為0,同時產(chǎn)生一個異常NO_DATA_FOUND.
SQL%ISOPEN
SQL%ISOPEN是一個布爾值,如果游標打開,則為TRUE, 如果游標關閉,則為FALSE.對于隱式游標而言SQL%ISOPEN總是FALSE,這是因為隱式游標在DML語句執(zhí)行時打開,結(jié)束時就立即關閉。
事務控制語句
事務是一個工作的邏輯單元可以包括一個或多個DML語句,事物控制幫助用戶保證數(shù)據(jù)的一致性。如果事務控制邏輯單元中的任何一個DML語句失敗,那么整個事務都將回滾,在PL/SQL中用戶可以明確地使用COMMIT、ROLLBACK、SAVEPOINT以及SET TRANSACTION語句。
COMMIT語句終止事務,永久保存數(shù)據(jù)庫的變化,同時釋放所有LOCK,ROLLBACK終止現(xiàn)行事務釋放所有LOCK,但不保存數(shù)據(jù)庫的任何變化,SAVEPOINT用于設置中間點,當事務調(diào)用過多的訪問Oracle數(shù)據(jù)庫操作時,中間點是非常有用的,SET TRANSACTION用于設置事務屬性,比如read-write和隔離級等。
顯式游標
當查詢返回結(jié)果超過一行時,就需要一個顯式游標,此時用戶不能使用select into語句。PL/SQL管理隱式游標,當查詢開始時隱式游標打開,查詢結(jié)束時隱式游標自動關閉。顯式游標在PL/SQL塊的聲明部分聲明,在執(zhí)行部分或異常處理部分打開,取數(shù)據(jù),關閉。
使用游標
這里要做一個聲明,我們所說的游標通常是指顯式游標,因此從現(xiàn)在起沒有特別指明的情況,我們所說的游標都是指顯式游標。要在程序中使用游標,必須首先聲明游標。
聲明游標
語法:
- CURSOR cursor_name IS select_statement;
在PL/SQL中游標名是一個未聲明變量,不能給游標名賦值或用于表達式中。
以上的相關內(nèi)容就是對訪問Oracle數(shù)據(jù)庫的DML語句的介紹,望你能有所收獲。
【編輯推薦】
- Oracle導入時需要用到兩個相關程序
- Oracle客戶端配置安裝的實際操作步驟
- Oracle實現(xiàn)跨服務器操作詳解
- 關閉Oracle死鎖進程的具體操作步驟
- 關閉Oracle死鎖進程的具體操作步驟