Oracle資料庫學習筆記之游標

2021-08-04 16:45:16 字數 1811 閱讀 3751

游標(游標):用來處理資料庫中臨時得到的資料,預設情況下oracle資料庫之允許在同乙個會話中,開啟300個游標

alter system set open_cursors=400 scope=both; --scope的取值memory(只更改當前值,不更改引數檔案),spfile(只更改引數檔案,不更改當前值,資料庫需要重新啟動才可生效),both(當前值和引數檔案同時更改)

游標的分類

隱式游標--系統提供

執行更新,刪除,新增和查詢一條資料

隱式游標屬性

(1)sql%rowcount 執行dml操作時返回的行數  返回整形

(2)sql%found 值是true表示操作成功

(3)sql%notfound: 和sql%found相反

(4)sql%isopen:游標是否是開啟狀態

沒有引數的游標

(1)宣告游標:

cursor 游標名 is select 語句;

(2)開啟游標

open 游標名;

(3)關閉游標

close 游標名; 

(4)取出游標的值

fetch 游標名 into 變數;

(5)顯示游標的屬性  游標名%屬性

%rowcount 返回執行行數

%found 最近一條fetch語句是否取到結果 返回true有結果

%notfound 同%found相反

%isopen 游標是否開啟

例:使用游標迴圈輸出所有人的姓名和工資

declare 

c_ename emp.ename%type;

c_sal   emp.sal%type;

cursor c_emp is select ename,sal from emp;

begin 

open c_emp;

loop

fetch c_emp into c_ename,c_sal;

dbms_output.put_line(c_ename||','||c_sal);

exit when c_emp%notfound;

end loop;

close c_emp;

end;

帶引數的游標

宣告:cursor 游標名(變數名 資料型別,...) is select語句;

開啟游標傳入引數

open 游標名(實參);

注:引數設定資料型別時不指定長度

變數傳遞引數給游標

注:開啟游標前給變數賦值;

例:--變數傳參給游標  --根據job 和deptno查詢員工empno 和ename

declare

cursor emp_info(ujob varchar2,udeptno number) is 

select empno,ename from emp where job=ujob and deptno=udeptno;

uname emp.ename%type;

uno   emp.empno%type;

begin

--開啟游標前給變數賦值 (ujob:='analyst';udeptno:=20;)或直接在open的時候賦值

open emp_info('analyst',20);

loop

fetch emp_info into uno,uname;

exit when emp_info%notfound;

dbms_output.put_line(uno||','||uname);

end loop;

close emp_info;

end;

Oracle資料庫之游標

一 準備表和資料 1 建立表 create table emp empno varchar2 32 ename varchar2 32 job varchar2 32 sal varchar2 32 2 新增資料 insert into emp empno,ename,job,sal values ...

資料庫之游標

當select返回多行資料時。當在pl sql塊中執行查詢語句 select 和資料操縱語句 dml 式,oracle會為其在記憶體中分配上下文區 context area 即緩衝區,游標是指向上下文區的指標。對於資料操縱語句和單行select into語句,oracle會為他們分配隱含游標。pl ...

SqlServer資料庫之游標

游標的簡單實現,直接上sql語句 迴圈對每乙個 統計業績 declare cursor name cursor for 定義游標 需要進行游標的資料表 select from agenttemp t open cursor name 開啟游標 fetch next from cursor name ...