Oracle package demo 包
1.package 程序包说明(由函数、过程、变量、常量、游标和异常组成)
create or replace package pk_test is -- Author : CHEN -- Created : 2019/10/21 11:34:30 -- Purpose : package test -- Public constant declarations --<ConstantName> constant <Datatype> := <Value>; words varchar2(100) := 'To be a better man!'; -- Public variable declarations --<VariableName> <Datatype>; v_count varchar2(100); -- Public function and procedure declarations --function <FunctionName>(<Parameter> <Datatype>) return <Datatype>; function f_get_money(v_salary number, v_month number) return number; procedure p_insertnumbers(nums in integer); end pk_test;
注意:可以将对象名加到END子句,这样会使在代码中逻辑关系更加清楚。
2.package body 程序包体(程序包体包含了程序包说明中列出的所有公有对象的代码块和说明。程序包体还可以包括没有在程序包说明中列出的对象,这些对象被称为私有对象,私有对象只能由统一程序包体中的其他对象使用)
程序包体的名称应该与程序包说明的名称相同。
create or replace package body pk_test is
-- Private type declarations
--type <TypeName> is <Datatype>;
-- Private constant declarations
--<ConstantName> constant <Datatype> := <Value>;
-- Private variable declarations
-- <VariableName> <Datatype>;
-- Function and procedure implementations
function f_get_money(v_salary number, v_month number) return number is
-- <LocalVariable> <Datatype>;
begin
--<Statement>;
return v_salary * v_month;
end;
procedure p_insertnumbers(nums in integer) is
nums_a integer(5) := nums;
begin
LOOP
insert into t3 values ('test', sysdate);
commit;
nums_a := (nums_a - 1);
exit when nums_a < 1;
end loop;
end p_insertnumbers;
end pk_test;
准备:
create table T3 ( ACTION VARCHAR2(100), A_TIME TIMESTAMP(6) )
调用:
truncate table t3; select * from t3; select pk_test.f_get_money(1000,12) from dual; call pk_test.p_insertnumbers(5); select * from t3;
结果:

注意:PLS-00363: expression 'nums' cannot be used as an assignment target
oracle中不能为in型的变量赋值,所以需要建一个变量,让它等于in 的变量
We only live once, and time just goes by.

浙公网安备 33010602011771号