Oracle 游標 引用游標

2021-09-12 05:29:43 字數 2941 閱讀 7884

sql> set severoutput on;

sp2-0735: unknown set option beginning "severoutpu..."

sql> set serveroutput on;

sql> remark 引用游標

sql> remark

sql> remark .........

sql> remark 引用游標:無法在游標宣告的時候就確定游標的查詢語句,需要根據業務邏輯過程確定查詢,引用游標就是擁有這個靈活性;

sql> remark 弱型別引用游標的案例:

sql> declare

2 type curemptype is ref cursor;

3 curemp_ref curemptype;

4 command char(1);

5 currow emp%rowtype;

6 theename emp.ename%type;

7 begin

8 dbms_output.put_line('請輸入操作命令('||'1-查詢deptno=30員工的姓名,'||'其它查詢job=manager的員工資訊');

9 command:=&m命令;

10 if command='1' then

11 dbms_output.put_line('輸入命令1----');

12 open curemp_ref for select empno from emp where deptno=30;

13 loop

14 fetch curemp_ref into theename;

15 exit when curemp_ref%notfound;

16 dbms_output.put_line(theename);

17 end loop;

18 close curemp_ref;

19 else

20 dbms_output.put_line('輸入的命令是:2...');

21 open curemp_ref for select * from emp where job='manager';

22 loop

23 fetch curemp_ref into currow;

24 exit when curemp_ref%notfound;

25 dbms_output.put_line('編號:'||currow.empno);

26 end loop;

27 end if;

28 end;

29 /

enter value for m命令: 2

old 9: command:=&m命令;

new 9: command:=2;

請輸入操作命令1-查詢deptno=30員工的姓名,其它查詢job=manager的員工資訊

輸入的命令是:2...

編號:7698

編號:7782

pl/sql procedure successfully completed.

sql> remark 強型別游標的定義

sql> declare

2 type curemptype is ref cursor return emp%rowtype;

3 curemp_ref curemptype;

4 command char(1);

5 currow emp%rowtype;

6 begin

7 dbms_output.put_line('請輸入操作指令:1 和 2');

8 command :=&命令;

9 if command='1' then

10 dbms_output.put_line('1.....');

11 open curemp_ref for select * from emp where deptno=30;

12 loop

13 fetch curemp_ref into currow;

14 exit when curemp_ref%notfound;

15 dbms_output.put_line('編號:'||currow.empno||'姓名:'||currow.ename);

16 end loop;

17 close curemp_ref;

18 else

19 dbms_output.put_line('2...');

20 open curemp_ref for select * from emp where job ='manager';

21 loop

22 fetch curemp_ref into currow;

23 exit when curemp_ref%notfound;

24 dbms_output.put_line('編號:'||currow.empno||'姓名:'||currow.ename);

25 end loop;

26 close curemp_ref;

27 end if;

28 end;

29 /

enter value for 命令: 1

old 8: command :=&命令;

new 8: command :=1;

請輸入操作指令:1 和 2

1.....

編號:7499姓名:allen

編號:7521姓名:ward

編號:7654姓名:martin

編號:7698姓名:blake

編號:7844姓名:turner

編號:7900姓名:james

pl/sql procedure successfully completed.

sql> spool off;

[color=olive][/color][size=medium][/size]

ORACLE的引用游標SYS REFCURSOR

declare c dept sys refcursor c emp sys refcursor v deptno dept.deptno type v empno emp.empno type begin open c dept for select d.deptno,cursor select ...

Oracle使用游標

了解一下訪問資料庫的ddl和tcl語句 一。plsql中使用select語句,應該與into字句連用,查詢出的返回值賦予into子句中的變數 變數的宣告是在delcare中 二。type屬性 在plsql中可以將變數和常量宣告為內建或使用者定義的資料型別,以引用乙個列名,同時繼承他的資料型別和大小。...

oracle宣告游標和使用游標

使用游標便利員工工資 declare 宣告乙個變數接收員工工資 v sal emp.sal type 宣告乙個變數接收員工編號 v ename emp.ename type 宣告乙個游標 cursor cur name isselect ename,sal from emp 查詢所有員工工資 beg...