ORACLE PL/SQL包(package)学习笔记
包由包规范和包体两部分组成。
1、包规范(Package Specification)
包规范,也叫做包头,包含了有关包的内容的信息。但是,它不包含任何过程的代码。
创建包头的语法一般如下
CREATE [OR REPLACE] PACKAGE package_name {IS | AS}
Procedure_name | function_name | variable_declaration | type_definition | exception_declaration | cursor_declaration
END [package_name];
声明包头还要遵循一些语法规则,如下:
包部件可以以任意次序出现。但是,对象必须在被引用之前进行声明。
所有类型的部件都没有必要都被使用。例如,包可以仅包含过程和函数规范,而没有声明异常处理或类型。
对于过程和函数的所有声明都必须是前向声明。
2、包主体(Package Body)
包主体和包头存储在不同的数据字典中。如果没有对包头进行成功的编译,就不可能对包主体编译成功。主体中包含了在包头中前向子程序声明相应的代码。
包主体是可选的。如果包头不包含任何过程或函数,那么包主体可以没有。这个技术对于声明全局变量是很有用的,因为包中的所有对象在包的外面是可见的。
包头中的所有前向声明必须在包主体中被更新。过程或函数的规范在包头和包主体中必须是相同的。这个规范包括子程序的名字、参数的名字以及参数的模式。
3、包和作用域
在包头中定义的任何对象都有一定的范围,在包以外通过使用包名称限定仍然可以使用这些对象。例如,可以像下面PL/SQL块那样调用InventoryOps.DeleteISBN过程。
BEGIN
InventoryOps.DeleteISBN(‘78824389’);
END;
包过程的调用与单独的过程调用相同,唯一的区别就是在包过程的前面添加了包名称前缀。包过程可以带有默认的参数,可以使用位置表示法或者名称表示法调用它们,就像单独的存储过程一样。
包头中的对象在包主体中可以直接使用,不需要附带包名前缀。
4、包子程序的重载
在包中,过程和函数是可以重载的。这也就意味着可以让多个过程或函数共用同一个名称,但是带有不同的参数。这是一个非常有用的功能特性,因为它让同一个操作可以执行在不同类型的对象上。
下面示例演示了包子程序的重载
CREATE OR REPLACE PACKAGE InventoryOps AS
…
-- Returns an array containing the books with the specified status.
PROCEDURE StatusList(p_Status IN
相关文档:
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
&nbs ......
SQL Select语句完整的执行顺序
2009-06-02 15:57
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;
以下结论是通过在Sql Server2000上的实验得出的结论, ......
SQL Server 2005 日志删除和日志文件限制(转)
2009年08月04日 星期二 下午 04:40
清除日志:
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck ......
1. select replace(CA_SPELL,' ','') from hy_city_area 去除列中的所有空格
2. LTRIM() 函数把字符串头部的空格去掉
3. RTRIM() 函数把字符串尾部的空格去掉
4. select LOWER(replace(CA_SPELL,' ','')) f ......
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- --- ......