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