数据库
首页 > 数据库> > oracle 包 简单使用

oracle 包 简单使用

作者:互联网

理解PL/SQL包

简介

包(package)的主要作用是用于逻辑组合相关的PL/SQL类型
比如记录类型或者集合类型,PL/SQL游标或游标声明以及PL/SQL子程序
还可以包含任何可以在块的声明区中定义的变量

或者说是

将功能或业务相似的存储过程,函数
以及类型等进行一个封装

包的组成

一个PL/SQL包由如下两部分组成

包的优点

包规范

语法

create or replace package 包名
is
  --声明变量
  --声明常量
  --类型的定义
  --游标的定义
  --声明存储过程
  procedure 存储过程名[(参数 in|out|in out 类型,..)];
  --声明函数
  function 函数名[(参数 类型,...)] return 返回值类型;
end[包名];

创建一个包规范

create or replace package pk1
is
  --声明一个变量
  s varchar2(50);
  --声明一个常量
  T constant varchar2(10):='TAB_';
  --定义一个集合类型
  type ity is table of varchar2(30);
  --声明一个存储过程
  procedure p1;
  --声明函数
  function fn(n number) return number;
end pk1;

包体

语法

create or replace package body 包名
is
  --声明私有对象
  --声明私有变量
  --声明私有常量
  --私有函数或存储过程
  --公有对象的实现
end[包名];

注意:
包名,和包声明的名字一样
私有对象只能在包体内部调用,在最前面声明

创建一个包体

create or replace package body pk1
is
  --声明变量
  ss varchar(50);
  --乘法表
  procedure p1
    is
    begin
      for i in 1..9 loop
        for j in 1..i loop
          dbms_output.put(i||'*'||j||'='||i*j);
        end loop;
      dbms_output.put_line('');
      end loop;
    end;
  
  --阶乘
  function fn(n number) return number
    is
    --声明一个变量保存阶乘
      s number(10) :=1;
    begin
      for i in 1..n loop
        s:=i*s;
      end loop;
      return s;
    end;
end;

调用

调用1

begin
  pk1.s:=3;
  dbms_output.put_line(pk1.s);
end;

输出1

3

调用2

begin
  pk1.ss:=3;
  dbms_output.put_line(pk1.ss);
end;  

输出2

ORA-06550: 第 2 行, 第 7 列: 
PLS-00302: 必须声明 'SS' 组件

变量ss在包体中声明,外部程序不能访问

调用3

begin
  pk1.p1();
end;

输出3

1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

调用&&输出4

SQL> select pk1.fn(4) from dual;
 PK1.FN(4)
----------
        24

标签:pk1,end,变量,SQL,简单,使用,oracle,声明,包体
来源: https://www.cnblogs.com/inmeditation/p/12107752.html