2024年7月11日 存储过程练习3

--7.创建一个存储过程,以两个整数为参数,输出工资排序在两个参数之间的员工信息:
create or replace procedure p_51(n in number, n1 in number)
is
begin
    for x in (select * from emp where sal <= n and sal >= n1 order by sal desc) loop
        dbms_output.put_line(x.ename || ',' || x.sal);
    end loop;
exception
    when others then
    raise_application_error(-20202, '发生其他异常:' || sqlerrm);
end;
begin
  p_51(3000,1);
end;
--8.创建一个存储过程,向dept表中添加一条新记录:(in参数)
select * from dept
create or replace procedure p_51(dno in number, na varchar2, loc varchar2)
is
begin
  insert into dept(deptno, dname, loc)
  values(dno, na, loc);
  commit;
  dbms_output.put_line('success');
exception
  when others then
    raise_application_error(-20202, '插入部门信息时发生异常:' || sqlerrm);
end;
begin
  p_51(40,'si','pcik');
end;
--9.从emp表中查询给定职工(提示:使用&来输入员工编号)的职工姓名和工资。(要求:利用out模式的参数将值传给调用者。)
create or replace procedure p_51(eno in number, en out varchar2, sa out number)
is
begin
  select ename, sal into en, sa
  from emp
  where empno = eno;
exception
  when no_data_found then
    raise_application_error(-20202, '找不到员工编号为 ' || eno || ' 的员工信息。');
  when others then
    raise_application_error(-20203, '查询员工信息时发生异常:' || sqlerrm);
end;


declare
  v_en varchar2(20);
  v_sal number;
begin
  p_51(&eno, v_en, v_sal);
  dbms_output.put_line('员工姓名: ' || v_en || ', 工资: ' || v_sal);
end;


--10.创建一个过程,在执行调用过程时,可随机输入emp表中某个雇员的员工编号,
--根据雇员所在的部门,返回该部门下所有雇员的姓名和薪水值。(out参数)。
create or replace procedure e9(eno number,e out emp%rowtype)
is 
  str varchar2(300) := 'select * from emp where empno=:1';
begin
  execute immediate str into e using eno;
exception
  when others then
    dbms_output.put_line(sqlerrm);
end; 
declare
  em emp%rowtype;
begin
  e9(&员工编号,em);
  for x in (select * from emp where deptno=em.deptno) loop
    dbms_output.put_line(x.ename||','||x.sal);
  end loop;
end;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值