Oracle 游标使用全解(2)


--3,使用游标和while循环来显示所有部门的的地理位置(用%found属性)
declare
      --游标声明
      cursor csr_TestWhile
      is
      --select语句
      select  LOC
      from Depth;
      --指定行指针
      row_loc csr_TestWhile%rowtype;
begin
  --打开游标
      open csr_TestWhile;
      --给第一行喂数据
      fetch csr_TestWhile into row_loc;
      --测试是否有数据,并执行循环
        while csr_TestWhile%found loop
          dbms_output.put_line('部门地点:'||row_loc.LOC);
          --给下一行喂数据
          fetch csr_TestWhile into row_loc;
        end loop;
      close csr_TestWhile;
end;
select * from emp


--4,接收用户输入的部门编号,用for循环和游标,打印出此部门的所有雇员的所有信息(使用循环游标)
--CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement;
--定义参数的语法如下:Parameter_name [IN] data_type[{:=|DEFAULT} value] 

declare
      CURSOR
      c_dept(p_deptNo number)
      is
      select * from emp where emp.depno=p_deptNo;
      r_emp emp%rowtype;
begin
        for r_emp in c_dept(20) loop
            dbms_output.put_line('员工号:'||r_emp.EMPNO||'员工名:'||r_emp.ENAME||'工资:'||r_emp.SAL);
        end loop;
end;
select * from emp 
--5:向游标传递一个工种,显示此工种的所有雇员的所有信息(使用参数游标)
declare
      cursor
      c_job(p_job nvarchar2)
      is
      select * from emp where JOB=p_job;
      r_job emp%rowtype;
begin
      for r_job in c_job('CLERK') loop
          dbms_output.put_line('员工号'||r_job.EMPNO||' '||'员工姓名'||r_job.ENAME);
        end loop;
end;
SELECT * FROM EMP

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2f48cf6a50b04c1130e10f23d5f34489.html