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
相关文档:
SQL Select语句完整的执行顺序
2009-06-02 15:57
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;
以下结论是通过在Sql Server2000上的实验得出的结论, ......
卸载SQL Server 2005的方法之一,放在这儿只是为了记住:
1:把SQL Server2005的安装盘(安装文件)放入到光驱。
2:打开如下路径:开始/运行,输入:cmd
3:输入下列命令:
Start /wait \setup.exe /qb REMOVE=ALL INSTANCENAME=:管区盘符,例如:G:、H:等;:安装的SQLServer实例名称,默认值为:功能 ......
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- --- ......
第十一题:
有表students(name,class,grade),请用标准sql语句完成
name class grade
张三 数学 81
李四 语文 70
王五 数学 90
张三 语文 60
李四 数学 100
王五 语文 90
王五 英语 81
要求: 用sql语句输出各门功课都大于80分的同学姓名?
create table students (
name varchar(25),
class varchar(25),
grad ......
PL/SQL: Oracle中的SQL过程化编程语言
1. PL/SQL程序是由块结构构成,格式如下:
[DECLARE
--声明部分
]
BEGIN
-- 主体
[EXCEPTION
-- 异常处理块
]
END;
/ --块的结束
2.变量
简单变量: ......