關於顯示游標的使用

2021-04-18 21:55:13 字數 2770 閱讀 9684

示例一:在顯示游標中使用

fetch…into

語句:

declare

cursor emp_cursor is

select ename,sal from emp where deptno=10;

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

open emp_cursor;

loop

fetch emp_cursor into v_ename,v_sal;

exit when emp_cursor%notfound;

dbms_output.put_line(v_ename||':'||v_sal);

end

loop

;

close emp_cursor;

end;

/clark

:2450

king:5000

miller:1300

示例二:在顯示游標中,使用

fetch…bulk collect into

語句提取所有資料。

declare

cursor emp_cursor is

select ename from emp where deptno=10;

type ename_table_type is table of varchar2(10);

ename_table ename_table_type;

begin

open emp_cursor;

fetch emp_cursor bulk collect into ename_table;

for i in 1..ename_table.count loop

dbms_output.put_line(ename_table(i));

end

loop

;

close emp_cursor;

end;

/clark

king

miller

示例三:在顯示游標中使用

fetch…bulk collect into ..limit

語句提取部分資料

當使用fetch..bulk collect into

語句提取資料時,預設情況下會提取結果集的所有資料。如果結果集含有大量資料,並且使用

varray

集合變數接受資料,那麼可能需要限制每次提取的行數。下面以每次提取

5行資料為例,說明使用

limit

子句限制提取的方法。示例如下:

declare

type name_array_type is varray(5) of varchar2(10);

name_array name_array_type;

cursor emp_cursor is select ename from emp;

rows int := 5;

v_count int := 0;

begin

open emp_cursor;

loop

fetch emp_cursor bulk collect into name_array

limit rows;

dbms_output.put('僱?

名:');

for i in 1..(emp_cursor%rowcount - v_count) loop

dbms_output.put(name_array(i)||' ');

end

loop

;

dbms_output.new_line;

v_count := emp_cursor%rowcount;

exit when emp_cursor%rowcount;

end

loop

;

end;

/雇員名:

**ith allen ward jones martin

雇員名:

blake clark scott king turner

雇員名:

adams james ford miller

示例五:基於游標定義記錄變數 使用

%rowtype

屬性不僅可以基於表和檢視定義記錄變數,也可以基於游標定義記錄變數。當基於游標定義記錄變數時,記錄成員名實際就是

select

語句的列名或列別名。為了簡化顯示游標的資料處理,建議開發人員使用記錄變數存放游標資料。下面以顯示所有雇員名及其工資為例,說明在處理顯示游標資料時使用記錄變數的方法。示例如下:

declare

cursor emp_cursor is select ename,sal from emp;

emp_record emp_cursor%rowtype;

begin

open emp_cursor;

loop

fetch emp_cursor into emp_record;

exit when emp_cursor%notfound;

dbms_output.put_line('雇員

名:' || emp_record.ename || ',

雇員工資:

' || emp_record.sal);

end

loop

;

close emp_cursor;

end;

/

關於sql server游標的使用

做統計時某些情況下使用游標更為方便,例如我要統計每個檢測機構的車牌識別率,但是有些檢測機構沒有營業所以不需要統計,通過游標遍歷select出來的機構狀態表,再通過臨時表儲存所需要的車牌識別率,最後通過這個臨時表取識別率。alter procedure dbo apro abcd 各種接受引數 ret...

關於SQL中游標的使用

前言 不想寫太多的理 字,怕把大家給搞怕了,以至看完整篇文字還不知道游標是到底做什麼的。所以現在我們就切入主題。一 游標的使用 使用游標的順序 聲名游標 開啟游標 讀取資料 關閉游標 刪除游標。宣告游標 最簡單游標宣告 declare 游標名 cursor for如 declare mycursor...

游標的使用

declare sql varchar 8000 password varchar 200 密碼 tbname varchar 500 資料庫.dbo.表名,如果不指定 dbo.表名,則匯出資料庫的所有使用者表 filename varchar 1000 匯入 匯出路徑 檔名,如果 tbname引數...