`
lixin_2002
  • 浏览: 21425 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

PL/SQL复习十二 包

SQL 
阅读更多

--建立包规范

create or replace package emp_package

is

g_deptno number(3) := 30; --全局变量

procedure add_employee(   --过程

   eno in number,

   name in varchar2,  

   salary in number,

   dno in number default g_deptno

);

procedure fire_employee(eno in number); --过程

function get_sal(eno in number) return number; --函数

end emp_package;

/

--建立包体

create or replace package body emp_package

is

  function validate_deptno(v_deptno in number) --私有函数,外界不能调用

  return boolean

  is

    v_temp int;

  begin

    select 1 into v_temp from dept where deptno = v_deptno;

    return true;

    exception

      when no_data_found then

        return false;

  end;

  procedure add_employee(   --过程

     eno in number,

     name in varchar2,  

     salary in number,

     dno in number default g_deptno

  ) is

  begin

    if validate_deptno(dno) then --内部调用私有函数

      insert into emp(empno,ename,sal,deptno) values(eno,name,salary,dno);

    else

      raise_application_error(-20010,'不存在该部门');

    end if;

    exception

      when dup_val_on_index then

        raise_application_error(-20011,'该雇员已存在');

  end;  

  procedure fire_employee(eno in number) is  --过程

  begin

    delete from emp where empno = eno;

    if sql%notfound then

      raise_application_error(-20012,'该雇员不存在');

    end if;

  end;

  function get_sal(eno in number) return number 

  is

    v_sal emp.sal%type;

  begin

    select sal into v_sal from emp where empno = eno;

    return v_sal;

    exception

      when no_data_found then

        raise_application_error(-20012,'该雇员不存在');

  end;

end emp_package;

/


调用:

调用包变量:SQL> exec emp_package.g_deptno := 20;

调用包过程:SQL> exec emp_package.add_employee(1111,'lixin',2000);

调用包函数:

SQL> var salary number;

SQL> exec :salary := emp_package.get_sal(7788);

 

PL/SQL procedure successfully completed

salary

---------

3000

以其他身份调用包的公共组件:

SQL> exec lixin.emp_package.add_employee(1236,'lixin2',20);

远程调用包组件:

SQL> exec emp_package.add_employee@orcl(1236,'lixin2',20);


---------------------------------------------------------------------------------------------------

包纯度级别:

create or replace package my_package is

minsal number;

maxsal number;

function max_sal return number;

function min_sal return number;

pragma restrict_references(max_sal,wnps);

pragma restrict_references(min_sal,wnps);

end;

/

wnps:不能修改变量

wnds:不能修改数据库

rnds:不能读取数据库

rnps不能读取包变量

 

分享到:
评论

相关推荐

    Oracle中SQL以及PL/SQL复习专用

    根据提供的文件信息,我们可以归纳出一系列关于...以上内容涵盖了Oracle数据库中SQL与PL/SQL的基础知识和常用功能,对于学习和复习都非常有用。理解并熟练掌握这些概念和技术,将有助于提高数据库管理和开发的能力。

    PL/SQL基础

    10. **包(Packages)**:包是组织PL/SQL代码的一种方式,包含一组相关的常量、类型、变量、过程和函数,提供模块化编程。 11. **游标变量(Cursor Variables)**:游标变量可以存储一个游标的当前状态,使得我们...

    oracle复习笔记之PL/SQL程序所要了解的知识点

    在Oracle数据库环境中,PL/SQL是一种强大的编程语言,它扩展了SQL的功能,使得数据库操作更加灵活和高效。本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理...

    oracle第一天练习

    Oracle数据库是世界上最广泛使用的数据库系统之一,其PL/SQL(Procedural Language/Structured Query Language)编程接口,也就是我们常说的PROC,是Oracle特有的、用于数据库操作的强大编程语言。"Oracle第一天练习...

    数据结构课后题解答(C语言描述)

    数据结构是计算机科学中的核心课程之一,它探讨了如何有效地组织和管理数据,以便于高效地执行各种操作。《数据结构用C语言描述》是一本广泛...对于准备面试或参加编程竞赛的人来说,这也是一个很好的复习和提升工具。

    plsql中文

    2. 1Z0-007 Note.doc:1Z0-007是Oracle Certified Associate, Oracle Database 12c Administrator Certified Professional的考试代码,这个文档可能是针对该考试的复习笔记或学习指南,包含PL/SQL部分的要点,如数据...

    我们公司的内部oracle开发课件(我的珍藏)

    Oracle开发不仅涉及到SQL语言的使用,还包括PL/SQL编程、数据库设计、性能优化等多个方面。1000.jpg可能是一张包含关键概念或流程图的图片,用于辅助理解复杂的Oracle架构或操作步骤。新建 Microsoft PowerPoint ...

    y2复习题及答案快快抢啊,而且分还低,答案真实!!!

    - **PL/SQL**(Procedural Language for SQL)是一种过程化SQL扩展语言,用于实现复杂的数据库操作。 #### PL/SQL块组成 1. **选项A**:PL/SQL支持游标操作和事务命令,这是正确的。 2. **选项B**:声明部分在PL/...

    Oracle选择题复习(带答案).doc

    Oracle 选择题复习(带答案) 本资源摘要信息涵盖了 Oracle 数据库的多个方面,包括数据库启动和关闭、参数文件、控制文件、表空间、PL/SQL 编程、异常处理、数据库性能等。 参数文件 * 在参数文件中,以 # 符号...

    ssd5-exam1选择题题库

    在准备考试或复习相关知识点时,理解并掌握每一项基本概念都是至关重要的,这有助于提升解决问题的能力和编写高质量代码的能力。 综上所述,“ssd5-exam1选择题题库”覆盖了C++编程语言中的多个核心知识点,包括...

    orcl复习资料.docx

    在上述的复习资料中,主要涉及了两个重要的PL/SQL编程概念:循环和异常处理。 1. 循环: - 简单Loop循环、While循环和For循环是PL/SQL中的基本控制结构,用于重复执行一段代码直到满足特定条件为止。 - 任务是...

    ORACLE复习资料

    本复习资料主要涵盖了Oracle中的数据操作语言(DML)和过程化SQL(PL/SQL)的相关实例,这对于理解和掌握Oracle数据库的操作至关重要。 1. 数据操作语言(DML): DML是Oracle中用于插入、更新、删除和查询数据的...

    ACCP6.0 S1考前理论部分

    3. **数据结构与数据库**:深入理解数组、链表、树、图等数据结构,以及关系型数据库的基本概念,如SQL语言和数据库设计原则。 4. **网络技术**:介绍计算机网络的基本原理,TCP/IP协议栈,网络通信模型,以及网络...

    oracle复习资料

    oracle PL/sql语言复习资料,很全的oracle函数,sql语句,以及游标,存储过程,触发器等复习资料.

    Oracle期末考试复习题.pdf

    本题涉及到的知识点涵盖了Oracle数据库的基础概念、SQL语法、数据类型、数据库对象以及PL/SQL编程。 1. **Oracle数据库应用**:Oracle数据库的应用主要分为开发和管理两大部分。开发主要涉及编写SQL和PL/SQL代码来...

    良心出品oracle数据库期末复习.doc

    这篇文档"良心出品oracle数据库期末复习.doc"涵盖了Oracle数据库的基础知识,包括数据文件、日志文件、控制文件等数据库组件,以及数据库操作、表空间管理、用户权限、SQL语句和PL/SQL编程等内容。 一、Oracle...

Global site tag (gtag.js) - Google Analytics