示例一:在顯示游標中使用
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引數...