zoukankan      html  css  js  c++  java
  • 【PLSQL】package包的使用

    ************************************************************************
      ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
    ************************************************************************

    package

    package是一个能够将相关对象存储在一起的PLSQL结构,Package包括两个分量的组成部分:specification包声明,body(声明中的程序实现,包体)。每一个部分都单独的存储在数据字典中。包声明时一个操作的接口,相应用来说是可见的。包体是黑盒,相应用来说隐藏了实现的细节

    包的组成包含:

                       过程,函数,变量,游标(定义一条sql语句),类型(定义符合类型),常量,异常

             包的长处:

                       ---方便相应过程和函数的组织,解决命名冲突

                       ---方便对过程和函数的组织:不改变包的声明定义,改变包的包体;

                       ---限制过程和函数的依赖性

                       ---在包体为实现时候,其它程序能够钓鱼保重的对象,对自己程序进行编译;

                       ---方便对过程和函数的安全性管理:包的訪问授权仅仅需一次性授权,区分公共过程和私有过程;

                       ---改善性能:在包首次被调用的时候,一个总体所有放入内存,降低多次调用的磁盘IO

                               

                               

            

    3.8.1 匿名块

    --过程和函数仅仅能在本匿名块中调用,比如;

    declare

             v_n1 number :=1;

             function fun1 (p_in number ) return number ls

    begin       

             return p_in

    end;

    procedure proc1 ls

    begin

             dbms_output.put_lin(fun1(v_n1));

    end;

    begin

             proc1;

    end;

    3.8.2 package的语法

    包头声明:

             create or replace package pkg_name {ls | as }

                       公共变量(varibale)的定义;

                 公共类型(type)的定义;

                       公共游标(cursor)的定义;

                       函数说明;

                       过程说明;

             end;

    --package body声明的语法;

             create or replace package body pkg_name

             ls | as

             --调用一次运行一次

             函数实现

             --调用一次运行一次

             过程实现

             begin

                       --初始化代码

                       --首次调用包中随意对象运行一次

             end;

    3.8.3 Package的使用

    包的声明

    create or replace  packeage pkg1

    ls

             --公共类型

    type t_rec is record

    (m1 number,m2 varchar2(10));

    --公共变量

    v_rec t_rec ;

    --公共过程

    procedure proc1;

    --公共函数

    function fun1(p_in number) return number;

    end

    包体的实现

    create or replace  packeage pkg1

    ls

             --实现过程

    procedure proc1

             ls

             begin       

                       dbms_outpurt.put_lin(v_rec.m1);

             end;

             --实现函数

             function fun1(p_in number) return number

             ls

                       begin

                                return p_in

                       end;

             --初始化代码

    begin

             v_rec.m1 :=100;

             end;

    调用package

    begin

             pkg1.v_rec.m1 :=pkg1.fun1(10);

             pkg1.proc1;

    end;

    ************************************************************************
      ****原文:blog.csdn.net/clark_xu 徐长亮的专栏
    ************************************************************************
  • 相关阅读:
    WCF Security基本概念(转载)
    Step by Step 配置使用HTTPS的ASP.NET Web应用
    HTTPS那些事(三)攻击实例与防御(转载)
    HTTPS那些事(二)SSL证书(转载)
    HTTPS那些事(一)HTTPS原理(转载)
    WCF服务创建与抛出强类型SOAP Fault
    WCF服务的异常消息
    如何创建一个RESTful WCF Service
    (转)webHttpBinding、basicHttpBinding和wsHttpBinding区别
    如何创建一个AJAX-Enabled WCF Service
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4544067.html
Copyright © 2011-2022 走看看