包的作用 : 包可以将任何出现在块声明的语句 ( 过程 , 函数 , 游标 , 游标 , 类型 , 变量 ) 放于包中 , 相当于一个容器 . 将声明语句放入包中的好处是 :
用户可以从其他 pl/sql 块中对其进行引用 , 因此包为 pl/sql 提供了全程变量 .
包分为两部分 : 包头和包体 .
如何创建包 ?
1) 包头 :
语法格式 :
create or replace package package_name /*包头名称 */
is|as pl/sql_package_spec定义过程 , 函数以及返回类型 , 变量 , 常量及数据类型定义 */
定义包头应当遵循以下原则 :
1) 包元素位置可以任意安排 . 然而在声明部分 , 对象必须在引用前进行声明 .
2) 包头可以不对任何类型的元素进行说明 . 例如 , 包头可以只带过程和函数说明语句 , 而不声明任何异常和类型 .
3) 对过程和函数的任何声明都必须只对子程序和其参数进行描述 , 不能有任何**的说明 , **的实现只能在包体**现 . 它不同于块声明 ,
在块声明中 , 过程和函数的**可同时出现在声明部分 .
2. 包体 :
语法格式 :
create or replace package body package_name/* 包名必须与包头的包名一致 */
is | as pl/sql_package_body游标 , 函数 , 过程的具体定义 */
包体是与包头相互独立的 , 包体只能在包头完成编译后才能进行编译 . 包体中带有包头中描述的子程序的具体实现的**段 . 除此之外 ,
包体还可以包括具有包体人全句属性的附加声明部分 , 但这些附加声明对于包头是不见的。
如包头:create or replace package pack_mypackagea
as-声明一个过程类型的变量,不用create or replace,不要在包头或包体的最顶部进行注释,那是无效的。
procedure proc_packmypro(deptno_ in number,mysurout out ;
-过程的重载:名称一样,参数列表不一样。
procedure proc_packmypro(deptno_ in number,ename_ in varchar2, mysurout out ;
-声明一个函数,查询表是否存在,后面要加上return 类型,不用create or replace
-function fun_isexittable(table_name_ varchar2) return number;
end ;包体。
create or replace package body pack_mypackagea
as-实现包头中声明的过程变量,名称和参数列表要一致,不用写create or replace,直接写类型名称。
procedure
proc_packmypro(deptno_ in number,mysurout out
is-在此过程中声明一个变量。
tablecont number;
-声明并初始化一个临时游标。
cursor temocur is select t.* from emp t where
begin--调用包外的函数。
tablecont:='aa');
dbms_'tablecont>>'tablecont);
--为游标赋值。
open mysurout for select t.* from emp t where
-迭代前面定义的临时游标。
for tt in temocur
loopdbms_'姓名》'|工资》'|
end loop;
exception when others then
dbms_'有异常!')
end proc_packmypro;
-重载过程,多了个参数ename_
procedure proc_packmypro(deptno_ in number,ename_ in varchar2, mysurout out
isbegin
open mysurout for select t.* from emp t where and
end proc_packmypro;
end pack_mypackagea;
数据库高级编程
sql高级编程。如果返回值为1,则向表course插入一条数据。declare reture value int set reture value 1 if reture value 1 begininsert into course values 8 会计 6 select from course...
数据库课程设计 VB编程
数据库课程设计报告。企业员工工资管理系统。姓名。班级。学号。指导教师。成绩。完成时间。完成地点。企业的工资管理是公司管理的一个重要内容。工资管理既涉及到企业劳动人事的管理,同时也是企业财务管理的重要组成部分。工资管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资 ...
数据库的高级语法
变量定义和赋值。全局变量 只读,由系统维护,作用域是单个连接。常见全局变量。error 返回执行的上一个语句的错误号,如果出错,错误号是大于0的整数,不出错则为0 print error select fro stuinfo print error select from stuinfo print...