oracle04 靜態游標,動態游標

2021-08-10 04:44:35 字數 1671 閱讀 2056

--3 使用帶引數的靜態游標查詢某工資區間的員工資訊(最高工資,最低工資是引數)

declare

va_emp emp%rowtype;

va_min emp.sal%type:=&最低工資;

va_max emp.sal%type:=&最高工資;

cursor  va_empcur(va_mingsal emp.sal%type,va_maxsal emp.sal%type)  is  select  * from emp where sal>va_mingsal and sal2 and a.r<10;

--select * from  ( select emp.*, rownum rn  from emp)a where a.rn <=2 and a.rn  >= 0

create or replace procedure  fenyeemp(

pageindex number,

pagesize  number,

totalpage   out number,

pageresultset  out sys_refcursor,

errorcode out varchar2,

errorinfo out varchar2)is

rowss  number(5);

page_exp exception;

begin

select count(0) into rowss from emp;

totalpage:=ceil(rowss/ pagesize);

if pageindex<1 or pageindex>totalpage then

raise page_exp;

end if;

open pageresultset for select a.ename,a.job from (select e.*,rownum r from emp e) a where a.r>(pageindex-1)*pagesize and a.rerrorcode:='0';

errorinfo:='cg';

exception

when page_exp then

errorcode:='1';

errorinfo:='sb';

when others then

errorcode:='2';

errorinfo:='qt';

end;

--2:呼叫該分頁儲存過程

declare 

page number(10):=&請輸入頁碼;

pagesize number(10):=&請輸入頁碼條數;

page_yb sys_refcursor;

rowss number(10);

emp_row emp%rowtype;

ename emp.ename%type;

jobs emp.job%type;

begin

fenyeemp(page,pagesize,rowss,page_yb);

loop

fetch page_yb into ename,jobs;

exit when page_yb%notfound;

dbms_output.put_line(ename||'--'||jobs); 

end loop;

end;

ORACLE靜態游標

游標 cursor 是系統為使用者開設的乙個 資料緩衝區 存放sql語句的執行結果。每個游標區都有乙個名字。使用者可以用sql語句逐一從游標中獲取記錄,並賦給主變數,交由主語言進一步處理。游標,從declare open fetch close是乙個完整過程。以下sql語句均在oracle中的sco...

oracle動態游標

declare v col1 varchar2 254 v col2 varchar2 254 v sql varchar2 1024 type my cursor is ref cursor v cur my cursor begin v sql select 1,2 from dual wher...

oracle 動態游標

今天寫了個動態游標 使用傳入引數 關於游標分類以及用法 思路就是先拼好sql 然後開動態游標 oralce10g也支援正規表示式 呵呵 剛剛好可以實現動態傳入引數 procedure tj pda testdata v indicator in varchar is type rc is ref c...