--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;