oracle中sql%rowcount的作用詳解
起因:新開發(fā)個存儲過程,需要當一個用戶調(diào)用存儲過程操作一行數(shù)據(jù)時,另外的用戶不允許調(diào)用過程操作該數(shù)據(jù)。
解決辦法:先將該記錄的狀態(tài)改為處理中,當別的用戶看到為處理中時則跳出過程。此時用到了sql%rowcount來判斷是否更新了記錄的狀態(tài)
update table t set t.status = 'processing' where t.id = P_ID and t.status <> 'processing' ; if sql%rowcount = 0 then return; end if;
由于沒有用過sql%rowcount,所以特意測試了一下,下面是對sql%rowcount功能的測試:
--先建個測試用表
create table Z_TEMP ( C1 VARCHAR2(10), C2 VARCHAR2(10), C3 VARCHAR2(10) );
--向表中插入3行測試數(shù)據(jù),插入后:
C1 C2 C3 ---------- ---------- ---------- 1 2 3
寫了一段過程來測試:
declare
v_n number;
begin
update z_temp t set t.c2 = '1' where t.c1 = 1; --更新一行記錄 c1 = 1
v_n := sql%rowcount;
dbms_output.put_line('第1.0次:' || v_n);
commit;
v_n := sql%rowcount;
dbms_output.put_line('第1.1次:' || v_n);--提交后sql%rowcounty已經(jīng)為0了
update z_temp t set t.c2 = '2' where t.c1 = 2; --更新一行記錄 c1 = 2
v_n := sql%rowcount;
dbms_output.put_line('第2次:' || v_n);
update z_temp t set t.c2 = '3'; --更新三行記錄
v_n := sql%rowcount;
dbms_output.put_line('第3次:' || v_n);
commit;
end; /*輸出結(jié)果:
第1.0次:1
第1.1次:0
第2次:1
第3次:3
*/
執(zhí)行后表中數(shù)據(jù):
C1 C2 C3 ---------- ---------- ---------- 1 3 2 3 3 3
由此可見sql%rowcount只會記錄未被提交的最后一條SQL語句的影響行數(shù)。這點很重要,如果想統(tǒng)計多個sql的合計影響行數(shù),就必須在每個sql后面,用一個變量保存當前的sql%rowcount。
到此這篇關(guān)于oracle中sql%rowcount的作用的文章就介紹到這了,更多相關(guān)oracle sql%rowcount內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle中的greatest 函數(shù)和 least函數(shù)示例代碼
這篇文章主要介紹了oracle中的greatest 函數(shù)和 least函數(shù)的實例代碼,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下2018-11-11
Oracle 12C實現(xiàn)跨網(wǎng)絡(luò)傳輸數(shù)據(jù)庫詳解
這篇文章主要給大家介紹了關(guān)于Oracle 12C實現(xiàn)跨網(wǎng)絡(luò)傳輸數(shù)據(jù)庫的相關(guān)資料,文中介紹的非常詳細,相信對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06
ORACLE 修改表結(jié)構(gòu) 之ALTER CONSTAINTS的使用
這篇文章主要介紹了ORACLE 修改表結(jié)構(gòu) 之ALTER CONSTAINTS的使用,需要的朋友可以參考下2014-07-07
使用MySQL語句來查詢Apache服務(wù)器日志的方法
這篇文章主要介紹了使用MySQL語句來查詢Apache服務(wù)器日志的方法,五個實例均基于Linux系統(tǒng)進行演示,需要的朋友可以參考下2015-06-06
LINUX下Oracle數(shù)據(jù)庫用戶創(chuàng)建方法詳解
這篇文章主要介紹了LINUX下Oracle數(shù)據(jù)庫用戶創(chuàng)建方法,結(jié)合實例形式較為詳細的分析總結(jié)了Oracle數(shù)據(jù)庫用戶創(chuàng)建的具體步驟與相關(guān)技巧,需要的朋友可以參考下2015-12-12
Oracle數(shù)據(jù)庫使用sqlplus時的連接錯誤與方向鍵亂碼解決
這篇文章主要介紹了Oracle數(shù)據(jù)庫使用sqlplus時的連接錯誤與方向鍵亂碼解決方法,實例環(huán)境基于Linux操作系統(tǒng),需要的朋友可以參考下2016-01-01
Oracle一個用戶如何訪問其它用戶的表應(yīng)用指南
本文將詳細介紹Oracle一個用戶如何訪問其它用戶的表,需要的朋友可以參考下2012-11-11

