为了账号安全,请及时绑定邮箱和手机立即绑定

游标的问题

1.写一个存储过程
  输入:员工编号
  输出: 如果这个存在,则输出部门编号,如果部门不存在,则输出0
  部门存在,则显示这个部门的所有的员工的信息

正在回答

1 回答

/*
1.写一个存储过程
  输入:员工编号
  输出: 如果这个存在,则输出部门编号,如果部门不存在,则输出0
  部门存在,则显示这个部门的所有的员工的信息
SQL语句:
select depno from emp where empno = ??;
判断存在一条记录,或者不存在记录,有两种方式实现
1. 通过系统例外NO_DATA_FOUND实现
2. 通过游标属性%notfound实现
--这里选择通过游标实现
select * from emp;
--集合-->游标-->循环-->退出条件:%notfound

变量:初始值  如何得到
v_depno number :=0;
v_empno number := &empno;

*/

set serveroutput on
accept empno prompt 'Please input empno:';

declare

--定义游标
    cursor c_emp(t_empno number) is select depno from emp where empno = t_empno;
    v_depno emp.depno%type;
--所有员工信息的游标
    cursor c_all_emp is select * from emp;
    v_all_emp emp%rowtype;
--定义输入接收的变量
    v_empno number := &empno;
begin
    --打开光标
    open c_emp(v_empno);
    --得到部门号
    fetch c_emp into v_depno;
    if c_emp%notfound then
        dbms_output.put_line('0部门存在.');
        --输出所有员工信息
        --打开所有员工游标
        open c_all_emp;
        loop
            --得到一个员工的信息
            fetch c_all_emp into v_all_emp;
            exit when c_all_emp%notfound;
            --打印一个员工的信息
            dbms_output.put_line(v_all.emp.empno||' '||v_all_empno.depno||'...');
            
        end loop;
        --关闭所有员工游标
        close c_all_emp;
    else
        dbms_output.put_line('depno is '||v_depno);
    end if;

--关闭光标
    close c_emp;

end;
/

0 回复 有任何疑惑可以回复我~
#1

qq__5778 提问者

谢谢你啊
2017-03-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Oracle数据库开发必备利器之PL/SQL基础
  • 参与学习       74946    人
  • 解答问题       208    个

Oracle数据库高级开发必备的基础,通过实例带你熟练掌握

进入课程

游标的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信