【PLSQL】package包的使用

【PLSQL】package包的使用

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

************************************************************************

  ****原文: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 徐长亮的专栏
************************************************************************
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117927.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]

    Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]作为菜鸟,为了满足我自己的求知欲,特别照着几篇大神教程装了一遍,给大家分享一下流程。1、win10安装(已安装请略过)1)系统U盘制作(参照微信公众号“软件安装管家”):http://mp.weixin.qq.com/s?__biz=MzIwMjE1MjMyMw==&mid=2650199025&idx=1&sn=49b0d9b6d9f02b68223f7a9f913cde…

    2022年7月24日
    21
  • ssm框架过时了吗_Spring Boot

    ssm框架过时了吗_Spring BootSpringSpring是一个开源的免费的框架Spring是一个轻量级的,非入侵式的框架控制反转(IOC),面向切面编程(AOP)支持事务的处理,对框架整合的支持IOC理论UserDaoUserDaoImpUserSeviceUserServiceImp在之前,用户的需求可能会影响原来的代码。使用一个set。public void setUserDao(UserDao userDao){ this.userDao = userDao;}之前是主动创建对象,控制

    2022年8月8日
    7
  • CAS实现单点登录(SSO)经典完整教程

    CAS实现单点登录(SSO)经典完整教程一、简介1、cas是有耶鲁大学研发的单点登录服务器2、本教材所用环境Tomcat7.2JDK6CASService版本cas-server-3.4.8-rele

    2022年6月7日
    100
  • java后端开发职责_工作职责和岗位职责有什么区别

    java后端开发职责_工作职责和岗位职责有什么区别java后台开发岗位职责:1.参与项目后端的设计、开发工作,承担核心功能模块的代码编写,确保项目进度和质量;2.参与开发人员codereview工作,并能提供性能优化、安全性建议;3.参与系统架构设计、接口规范制定、技术文档编写等。4.参与现有系统的优化改进。岗位要求:1.本科及以上学历,计算机相关专业优先,【扎实的数据结构/算法与编码能力】;2.JAVA基础扎实,1年及以上JAV…

    2025年5月27日
    5
  • Java学习笔记–StringTokenizer的使用「建议收藏」

    Java学习笔记–StringTokenizer的使用「建议收藏」拓展:Pattern.split替代String.splithttp://www.cnblogs.com/gnivor/p/4386978.htmlStringTokenizer是一个用来分隔St

    2022年7月2日
    29
  • 最短路径:Dijkstra算法(求单源最短路径)Floyd算法(求各顶点之间最短路径)[通俗易懂]

    最短路径:Dijkstra算法(求单源最短路径)Floyd算法(求各顶点之间最短路径)[通俗易懂]最短路径:在一个带权图中,顶点V0到图中任意一个顶点Vi的一条路径所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径最短的那条路径称为最短路径。DiskStra算法:求单源最短路径,即求一个顶点到任意顶点的最短路径,其时间复杂度为O(V*V)如图所示:求顶点0到各顶点之间的最短路径代码实现:#include<stdio.h>#include&l…

    2022年6月22日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号