-- 把注释说明啥的都写在代码中了,方便查看和执行
-- 是对Oracle存储过程的一个回顾和总结
--当建立了过程之后,Oracle会将过程名、源代码及其执行代码存放到数据字典中。当调用过程
--时,应用程序会按照其执行代码直接执行,而不需要重新解析过程代码,所以使用子程序的性
--能要优于直接执行SQL语句。通过查询数据字典USER_SOURCE,可以显示当前用户的所有子程序
--及其源码。
select * from all_source t where t.type = upper('procedure') and t.OWNER = upper('scott');
select * from user_source t where t.TYPE = upper('procedure');
-- 查看某一个具体的存储过程
select text from user_source t where t.TYPE = upper('procedure') and t.name = upper('PRO_SIMPLEINSERT');
-- 建立带输出参数的存储过程
-- 注意:varchar2后面是不带容量大小的,只是指明类型
create or replace procedure query_employee_pro(eno number,
name out varchar2,
salary out number) is
begin
select ename, sal into name, salary from emp where empno = eno;
exception
when no_data_found then
raise_application_error(-20000, '雇员不存在');
end;
-- 查询7369的员工信息,好于存储过程中查询出来的结果相匹配
select * from emp t where t.empno = '7369';
-- 调用带输出参数的存储过程(在pl/sql工具中)
-- 首先声明变量,包括输入参数和输出参数,注意变量的赋值方式
declare
var_no number := 7369;
var_name varchar2(10);
var_salary number;
begin
-- 调用存储过程,注意:在存储过程名字前加“call”会报错
query_employee_pro(var_no, var_name, var_salary);
dbms_output.put_line(var_no || '号员工名字是:' || var_name);
dbms_output.put_line(var_no || '号员工薪资是:' || var_salary);
end;
Oracle存储过程回顾
最新推荐文章于 2021-04-13 23:24:42 发布