mysql plsql cursor_Oracle--plsql游标创建和使用
游標(cursor)是Oracle系統(tǒng)在內(nèi)存中開辟的一個工作區(qū),在其中存放SELECT語句返回的查詢結(jié)果。,PL/SQL隱式建立并自動管理這一游
為什么要Oracle游標:
先看這個:
DECLARE
v_empno emp.empno%type;
v_ename emp.ename%type;
BEGIN
SELECT empno,ename
into v_ename,v_empno
FROM emp;
dbms_output.put_line(v_empno||' '||v_ename);
END;
這個SELECT語句可能返回多條記錄,所以這個賦值語句可能是錯誤的。所以游標可以發(fā)揮作用了。
什么是游標?
游標(cursor)是Oracle系統(tǒng)在內(nèi)存中開辟的一個工作區(qū),在其中存放SELECT語句返回的查詢結(jié)果。
游標的分類:
隱式游標:PL/SQL隱式建立并自動管理這一游標。隱式游標也叫做SQL游標。 對于SQL游標,不能對其顯式地執(zhí)行OPEN、CLOSE和FETCH語句,,但是可以使用游標屬性從最近執(zhí)行的SQL語句中獲取信息。
顯式游標:由程序員顯式說明及控制,用于從表中取出多行數(shù)據(jù),并將多行數(shù)據(jù)一行一行單獨處理。
隱式游標:
由Oracle在內(nèi)部聲明
由Oracle自行管理游標
可以使用游標屬性從最近執(zhí)行的SQL語句中獲取信息
用于處理DML語句以及返回單行的查詢
隱式游標屬性:
隱式游標舉例:
VARIABLE rows_deleted VARCHAR2(30)
DECLARE
v_deptno NUMBER := 20;
BEGIN
DELETE FROM emp
WHERE deptno = v_deptno;
:rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');
END;
/
返回所刪除行的數(shù)量
顯式游標:由用戶顯式聲明,查詢返回多行記錄
使用游標時,select語句查詢的結(jié)果可以是單條記錄,多條記錄,也可以是零條記錄。
游標工作區(qū)中,存在著一個指針(POINTER),在初始狀態(tài)它指向查詢結(jié)果的首記錄。
要訪問查詢結(jié)果的所有記錄,可以通過FETCH語句,進行指針的移動來實現(xiàn)。
使用游標進行操作,包括定義游標、打開游標、提取數(shù)據(jù)以及關(guān)閉游標幾步。
更多Oracle相關(guān)信息見Oracle 專題頁面 ?tid=12
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的mysql plsql cursor_Oracle--plsql游标创建和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专业音频如何把电平转换成dbu_谭俊峰|
- 下一篇: pycharm和pythonIDE安装详