oracle不显示plsql执行结果
set serveroutput on ;
1.创建一个函数,以员工号为参数,返回该员工的工资。
create or replace function emp_sal
(no emp.empno%type)
return emp.sal%type
is
empsal emp.sal%type;
begin
select sal into empsal from emp where empno=no;
if empsal is not null then
return empsal;
else
empsal:=-1;
return empsal;
end if;
end emp_sal;
/
函数的调用:
begin
dbms_output.put_line(emp_sal(&empno));
end;
/
2.创建一个存储过程select_emp,以部门号为参数,查询该部门的平均工资,
并输出该部门中比平均工资高的员工号、员工名。
create or replace procedure select_emp(dno emp.deptno%type)
as
avgsal emp.sal%type;
begin
select avg(sal) into avgsal from emp where deptno=dno;
dbms_output.put_line(dno||' '||'平均工资:'||avgsal);
for v_emp in(select * from emp where deptno=dno and sal>avgsal) loop
dbms_output.put_line(v_emp.empno||' '||v_emp.ename);
end loop;
exception
when no_data_found then
dbms_output.put_line('错误');
end select_emp;
/
编译错误查找:
警告: 创建的过程带有编译错误。
SQL> show errors;
PROCEDURE SELECT_EMP 出现错误:
存储过程调用:
declare
begin
select_emp(&deptno);
end;
/
查看存储过程:
select distinct name from user_source where type='FUNCTION';
删除存储过程:
drop procedure select_emp;