-- 查询某个部门中的员工姓名
set serveroutput on
declare
--定义带参数的光标
cursor cemp(dno number) is select ename from emp where deptno=dno;
pename emp.ename%type;
begin
--打开光标
open cemp(10);
loop
-- 取出每个员工的姓名
fetch cemp into pename;
exit when cemp%notfound;
dbms_output.put_line(pename);
end loop;
--关闭光标
close cemp;
end;
/
带参数的光标
带参数的光标语法:如图,如果多个参数,逗号进行分隔。
举例:查询某一部门的员工姓名。如图。它和不带光标的区别在于1、定义不同。2、打开不同(打开光标时,注意:需要传入一个参数)。这里传入的10代表部门号。
注意:光标%notfound的原理是判断是否从光标中fetch数据到变量中,如果fetch数据到变量中了,就返回false,如果没有fetch到数据到变量中,就返回true。
DECLARE CURSOR CUR IS SELECT A.EMPNO,A.ENAME FROM SCOTT.EMP A;
V_EMPNO SCOTT.EMP.EMPNO%TYPE;
V_ENAME SCOTT.EMP.ENAME%TYPE;
BEGIN
--打开游标
OPEN CUR;
--判断是否打开
IF CUR%ISOPEN THEN
LOOP
--当无数据时,退出循环
EXIT WHEN CUR%NOTFOUND;
FETCH CUR INTO V_EMPNO,V_ENAME;
DBMS_OUTPUT.put_line(V_EMPNO||':'||V_ENAME);
END LOOP;
--关闭游标
CLOSE CUR;
END IF;
END;
带参数的光标
默认只能打开300个光标,所以每次使用光标需要关闭光标资源
使用光标第二步
使用光标的第一个步骤
光标的定义形式
光标就是一个集合
带参数的光标
cursor 光标名 [(参数名 数据类型[,参数名 数据类型]...)] is select 语句;
带参数的光标:demo
0.0.0.
带参数的光标 : 定义的时候声明这个形参,然后在打开光标的是传个实参进入。
带参数光标实例
带参数的光标语法。
实例
带参数的光标
带参数的光标