遊標current of cur特性
有關遊標的current of特性使用,建立測試表test001,
create table test001(id number, user_name varchar2(20));
insert into test001 values(1, 'hzk');
insert into test001 values(2, 'zak');
insert into test001 values(3, 'zaglzd');
commit;
需要把每行id自增長10,遍歷遊標fetch到變數中
可以利用如下pl/sql程式塊進行處理
declare
v_ab test001%rowtype;
cursor cur01 is select * from test001;
begin
open cur01;
loop
fetch cur01 into v_ab;
update test001 set id=id+10 where user_name=v_ab.user_name;
exit when cur01%notfound;
commit;
end loop;
end;
/
此時我們利用遊標的where current of cur01對遊標讀取的所在行進行更新和刪除。
而利用遊標的current of特性可以很方便的處理update和delete操作取出表中游標最近賦值的資料,當然要使用這個特性也需要在宣告遊標時使用for update子串,而返回的資料行將處於row-level獨佔式鎖定,其他session只能查詢不能修改。
create or replace procedure procedure02
as
cursor cur01 is select * from test001 for update;
v_ab test001%rowtype;
begin
open cur01;
loop
fetch cur01 into v_ab;
exit when cur01%notfound;
update test001 set id=id+10 where current of cur01;
end loop;
commit;
end;
這裡從sql語言特點說一下sql語句的一些概念問題:
Sql語句採用集合操作方式,對資料處理是成組進行的,不過執行sql語句確是應用程式逐條發出,資料庫伺服器逐條執行的,採用pl/sql封裝sql語句則可以降低傳送請求次數,減少網路傳輸,提高效能。
這倒想起了很早之前的pub的帖子中一個sql最佳化,說到是多個sql語句,某位大牛直接把sql語句封裝到pl/sql中,其餘沒做什麼改變,當時真是想不通為什麼會這樣,減少網路開銷,直接處理pl/sql塊,減少逐條處理sql語句,看來直接封裝到pl/sql中倒是最簡單可能也是最有效的最佳化。
Select語句,也就是查詢語句
Dml也就是資料操縱語言,改變資料庫資料
Tcl也就是事務控制語言,用於提交回滾事務,commit、rollback、savepoint
Ddl也就是資料定義語言,用於建立 修改 刪除物件,create alter drop
Dcl資料控制語言,用於授權和回收許可權,grant和revoke
這裡近段時間的懶散,還是提醒下自己:心沉下去,切忌浮誇!
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057155/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遊標翻頁模式下的遊標值模式
- Oracle遊標Oracle
- Oracle 遊標Oracle
- SQL 遊標SQL
- 連結串列指向問題(pre = cur.next與cur.next = pre)
- Oracle遊標共享(Cursor Sharing)--常規遊標共享和自適應遊標共享(ACS)Oracle
- Oracle遊標共享,父遊標和子游標的概念Oracle
- PL/SQL-遊標和遊標變數的使用SQL變數
- 遊標查詢
- PL/SQL 遊標SQL
- MongoDB之遊標MongoDB
- SQL Server遊標SQLServer
- Oracle遊標示例Oracle
- Oracle遊標大全Oracle
- SQL 遊標cursorSQL
- SqlServer遊標例子SQLServer
- oracle cursor遊標迴圈比較遊標元素是否相同Oracle
- MySQL·引擎特性·InnoDBundolog漫遊MySql
- Sql Server系列:遊標SQLServer
- Sqlserver遊標複習SQLServer
- Oracle動態遊標Oracle
- 儲存過程——遊標儲存過程
- MySQL過程和遊標MySql
- 什麼是SQL遊標?SQL
- PL/SQL 04 遊標 cursorSQL
- SQL Server遊標使用例子SQLServer
- oracle遊標使用全解Oracle
- PLSQL學習-【5遊標】SQL
- Oracle 遊標使用全解Oracle
- [轉]oracle 遊標使用大全Oracle
- 【筆記】遊標變數筆記變數
- java中使用引用遊標Java
- SqlServer系列08---遊標SQLServer
- Oracle 遊標使用大全(轉)Oracle
- Oracle遊標使用大全(轉)Oracle
- Oracle顯示遊標的使用及遊標for迴圈Oracle
- Oracle - 共享遊標、父子游標、硬軟解析Oracle
- Oracle開發基礎-遊標Oracle