Oracle REF動態游標

2021-08-01 06:14:59 字數 1770 閱讀 5983

ref動態游標被用於處理多行的查詢結果集

在同乙個plsql塊當中,ref動態游標不同於特定的查詢繫結

開啟游標時才繫結,所以通常用於查詢語句需要執行時動態確定的情況

使用動態游標的步驟:

先定義乙個ref動態游標型別

示例:

動態游標分為強型別和弱型別

弱型別示例

動態游標示例

生成員工或者部門資訊

declare 

type refcur_t is ref cursor; --宣告游標型別

refcur refcur_t; --宣告游標遍歷

p_id number; --pid變數

p_name varchar2(50);

sel varchar2(1):=upper(substr('%tab',1,1)); --擷取之後再轉成大寫

begin

if sel ='e' then --如果是e是員工資訊

open refcur for select id,name from employees; --開啟游標

dbms_output.put_line('員工資訊');

elsif sel='d' then --如果是d是部門資訊

open refcur for select deptno,dname from dept;

dbms_output.put_line('部門資訊');

else --都不是就重新輸入

dbms_output.put_line('重新輸入');

return ;

end if;

fetch refcur into p_id,p_name; --獲取游標的資料

while refcur%found loop

dbms_output.put_line('#'||p_id||'p_name');

fetch refcur into p_id,p_name;

end loop;

close refcur;

end;

游標,動態,for迴圈

小測 輸出各部門員工的部門名稱和工號 姓名,工資。要求 各部門工資最高的放在前面 在 dallas 地方的部門名稱後加上 三種實現方式 1 通過顯式游標 2 通過for迴圈 3 通過動態sql方式 顯示游標 declare type emp dept is record name dept.dnam...

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...

游標,動態,for迴圈

小測 輸出各部門員工的部門名稱和工號 姓名,工資。要求 各部門工資最高的放在前面 在 dallas 地方的部門名稱後加上 三種實現方式 1 通過顯式游標 2 通過for迴圈 3 通過動態sql方式 顯示游標 declare type emp dept is record name dept.dnam...