Oracle笔记:程序包

程序包(PACKAGE,简称包)是一组相关过程,函数,变量,常量和游标等PL/SQL程序设计元素的组合,作为一个完整的单元存储在数据库中,用名称来标识包。它具有面向对象程序设计语言的特点,是对这些PL/SQL程序设计元素的封装。把相关的模块归类成为包,可使开发人员利用面向对象的方法进行存储过程的开发,从而提高系统性能。

程序包的定义分为程序包说明定义和程序包主体定义两部分组成。程序包说明用于声明包的公用组件,如变量,常量,自定义数据类型,异常,过程,函数,游标等。包说明中定义的公有组件不仅可以在包内使用,还可以由包外其他过程,函数使用。

--程序包说明定义
CREATE OR REPLACE PACKAGE PKG_1
IS
	TYPE pkg_cur IS REF CURSOR; 
	PROCEDURE QUERY_STU(IN_NO IN VARCHAR2, CUR_STU OUT pkg_cur);
END PKG_1;

--程序包主体定义
CREATE OR REPLACE PACKAGE BODY PKG_1
IS
	PROCEDURE QUERY_STU(IN_NO IN VARCHAR2, CUR_STU OUT pkg_cur)
	IS
	BEGIN
	     OPEN CUR_STU FOR
         SELECT NO,NAME FROM STU WHERE NO = IN_NO;
	EXCEPTION 
		WHEN OTHERS THEN
		RAISE;
	END;
END PKG_1;

程序包的使用测试如下图,一般情况下由应用程序调用。
在这里插入图片描述

程序包的删除
DROP REPLACE PACKAGE PKG_1–删除整个包
DROP REPLACE PACKAGE BODY PKG_1–只删除包体

DROP TABLE STU
CREATE TABLE STU
(
  NO      VARCHAR2(10 BYTE),
  NAME    VARCHAR2(10 BYTE),
  GENTLE  VARCHAR2(2 BYTE),
  AGE     NUMBER(2),
  DEPT    VARCHAR2(20 BYTE)
);

SET DEFINE OFF;
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120006', '李飒', '男', 12, '12工商管理');
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120005', '林琳', '女', 22, '12计算机');
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120004', '杨过', '男', 22, '12计算机');
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120003', '张清', '女', 21, '12外语');
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120001', '陈诚', '男', 23, '12计算机');
Insert into STU
   (NO, NAME, GENTLE, AGE, DEPT)
 Values
   ('120002', '李宗赫', '男', 25, '12图形');
COMMIT;

猜你喜欢

转载自blog.csdn.net/qq_39827640/article/details/106630007