oracle 有时候会大量使用过程函数,我们会创建package 来存放,和JAVA类差不多,通过包名字 + 过程(函数名),不至于重复,方便管理。比如:java.util.date 和 java.sql.date.
1.创建包体:
-- 创建包名字,一般以_pkg 结尾,或者开头
create or replace package test_pkg is
-- 函数名,一般以 pro 开头或者结尾
-- in 表示输入参数,可以省略,out 输出参数,不能省略
-- 参数类型 不用指定长度,这里可以创建函数,都以分号结尾
procedure test_pro(v_id in number,v_name varchar2, v_rs out number);
-- end 加你的包名,包体部分就创建完成了。
end test_pkg;
2.创建包体:
create or replace package body test_pkg is
-- 加了一个body 其他照写,过程后面去掉分号,用is/as
procedure test_pro(v_id number,v_name varchar2,v_rs out number) is
-- 这是pl/sql 基本语法,begin ..end;
begin
-- 这里默认给输出参数赋值,用 := 方式
v_rs := 0;
-- 模拟给test_ran 表,里面添加数据,就是把你的输入参数放进去就行了
insert into test_ran values(v_id,v_name);
-- 打印输出效果
dbms_output.put_line('ok----'||v_rs);
commit;
-- 异常控制,如果有其他任何异常 就。。。
exception when others then
v_rs := 1;
dbms_output.put_line('v_rs :'||v_rs);
rollback;
-- 可以加上 end 过程名,默认和if else 差不多
end;
end test_pkg;
3.调用
-- 显示你打印的东西,不然看不见
SET serveroutput ON;
DECLARE
-- 声明你的输出变量,用与接收输出的值,
-- 和JAVA 一样,定义变量 接收,然后返回
rs number;
BEGIN
-- 直接调用
test_pkg.test_pre(123,'test',rs);
end;