首页 > 数据库技术 > 详细

Oracle package demo

时间:2019-10-21 15:30:58      阅读:82      评论:0      收藏:0      [点我收藏+]

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 的变量

 

Oracle package demo

原文:https://www.cnblogs.com/jycjy/p/11713299.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!