--=======PLSQL包========= --首先我们来1个function , 1个procedure create or replace function f1(id in number) return number is v_sal emp.sal%type; begin select sal into v_sal from emp where empno = id; return v_sal; end; create or replace procedure p1 (id in number ,v_sal out emp.sal%type) is begin select sal into v_sal from emp where empno = id; end; -- ==ok ,现在调用上述的过程跟函数 declare v_sal emp.sal%type; begin dbms_output.put_line(f1(7900)); --调用函数 p1(7900,v_sal); --调用过程 dbms_output.put_line('procedure v_sal emp.sal%type:'|| v_sal); end; --======把不同的相关对象存储在一起,就要用到包. --即表示 把上述的function ,procedure 合成一个 --包:包含两部分 --声明:用于定义包的公共组件,如函数头,过程头,游标等以及常量,变量等。 -- 包头中定义的公共组件可以在包内引用,也可以被其它子程序引用。 -- body 实现:用于定义包头中定义过的过程和函数。可以单独定义私有组件, -----------包括变量,常量,过程和函数等。 -------私有组件只能在包内使用,而 不能被其它子程序所调用。 --对于应用来说 包声明是一个可见的接口,对应用来说是可见的。 --包体是黑盒,对应用来说隐藏了实现的细节 --定义包头 CREATE [OR REPLACE] PACKAGE package_name {AS|IS} public_variable_declarations | --公共变量 public_type_declarations | --公共类型 public_exception_declarations | --公共异常 public_cursor_declarations |--公共游标 function_declarations | --函数声明 procedure_specifications--过程声明 END [package_name] --定义包体,包体中的package_name应当与包头中的package_name相同 CREATE [OR REPLACE] PACKAGE BODY package_name {AS|IS} private_variable_declarations | private_type_declarations | private_exception_declarations | private_cursor_declarations | function_declarations | --函数实现,调用1次执行1次 procedure_specifications --过程实现,调用1次执行1次 begin 初始化代码 --首次调用包中的任意对象执行1次 END [package_name] --=============使用包有哪些优点? ============= --1.将相关的函数和过程组织在一起 --2.在一个用户环境内解决命名问题 --3.在不改变包声明的前提下 可以改变包体的实现 --4.限制过程,函数的依赖性 --5.整个包的访问权限只要1次授权 --6.区分私有过程,共有过程 --7.在包首次被调用时作为一个整体读入内存,减少多次调用时的磁盘I/O 次数 ---------创建包头 create or replace package pkg1 is type t_rec is record( --声明类型 n1 number , n2 varchar2(10) ); v_rec t_rec; --定义公共变量 procedure proce1 ; --声明过程 function fun1(p2 in number) return varchar2; --声明函数 end; --创建包体 create or replace package body pkg1 is --过程实现 procedure proce1 is begin dbms_output.put_line('v_rec ' || v_rec.n1); end; --函数实现 function fun1(p2 in number ) return varchar2 is begin return v_rec.n2||p2; end; begin v_rec.n1 :=100; --初始化在包头声明的变量 v_rec.n2 :='aaa'; end; --结束包体 --=================调用 declare v_str varchar2(10); --接收function返回的结果 begin v_str :=pkg1.fun1(10);--调用函数 dbms_output.put_line('v_str ' || v_str); pkg1.proce1;--调用过程 end; --查看包头 select line,text from user_source where name='PKG1' and type='PACKAGE'; --查看包体 select line,text from user_source where name='PKG1' and type='PACKAGE BODY'; --删除 drop package PKG1;
相关推荐
PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) PLSQL Developer7(oracle数据库) ...
Oracle数据库连接工具PLSQL轻桌面工具包,安装PLSQL必须下载轻桌面工具包
有JavaWEB的网上商城系统源码+项目说明(SSM框架、Shiro技术、Oracle数据库、PLSQL编程、JSP、JQuery、Ajax、Jso).zip 有JavaWEB的网上商城系统源码+项目说明(SSM框架、Shiro技术、Oracle数据库、PLSQL编程、JSP、...
oracle数据库利用plsql提取使用
Oracle数据库培训-PLSQL编程
oracle 数据库 plsql 存储过程
Oracle数据库11g64位Windows版安装包 OracleClient客户端x64位安装包 Plsql工具x64位
oracle数据库客户端,plsq中文版本,能够快速管理数据库
不安装oracle客户端,配置plsql连接数据库
oracle数据库练习PPT和plsql语法练习PPT 是不可多得的数据资料,初学者必学,全力推荐。
plsql developer连接远程数据库(本地不用安oracle)
oracle数据库系统的好工具,plsql程序设计,内容详尽,适合初学者,步骤详细,是一份难能可贵的资料,我找了很久的,现在共享给大家
大型数据库系统技术课程 3-1-Oracle数据库知识 PLSQL控制结构 共25页.ppt
用PLSQL远程连接Oracle数据库用 PLSQL远程连接Oracle数据库
plsqlDev链接Oracle数据库使用plsqlDev链接Oracle数据库使用plsqlDev链接Oracle数据库使用
使用PLSQL 创建Oracle数据库用户并设置权限
PLSQL语法Oracle数据库
PLSQl远程连接oracle数据库 (PLSQL远程连接Oracle 10g,9i)
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...
使用PLSQL创建Oracle数据库User用户并设置权限 主要演示了如何使用 PLSQL 创建一个 User 用户, 并使之具有创建表、修改表、访问表的权限。解决了 使用自定义用户创建表时出现的 没有表空间的访问权限的问题。