概述
PL/SQL子程序是一个带命名的过程或函数,可以重复调用。使用 PL/SQL子程序可以将程序模块化管理,并且能够减少网络开销,提高性能。
包头中声明并在包体中定义子程序,该子程序为包的子程序,存储在数据库中,直到包被删除。
示例
包的子程序
在模式级别使用 CREATE FUNCTION 或者CREATE PROCEDURE 语句创建的子程序是一个独立子程序,可以分为存储过程和存储函数。独立子程序存储在数据库中,直到该存储过程和存储函数被删除。
sql
--创建包头
CREATE OR REPLACE PACKAGE pack_1
AS
PROCEDURE pro_1(c1 INT,c2 VARCHAR2); -- 在包头中声明子程序
FUNCTION func_1(c1 INT,c2 VARCHAR2) RETURN INT; -- 在包头中声明子程序
END;
--创建包体
CREATE OR REPLACE PACKAGE BODY pack_1
AS
PROCEDURE pro_1(c1 INT,c2 VARCHAR2) -- 在包体中定义子程序
AS
id INT;
name VARCHAR2;
BEGIN
name:=c2;
SEND_MSG('c2='||name);
END pro_1;
FUNCTION func_1(c1 INT,c2 VARCHAR2) RETURN INT -- 在包体中定义子程序
AS
id INT;
name VARCHAR2;
BEGIN
id:=c1;
RETURN id;
END func_1;
END pack_1;
/
存储过程
sql
CREATE OR REPLACE PROCEDURE pro_1(id INT,name INT)
AS -- 声明区开始
v1 INT;
BEGIN -- 声明区开始
v1:=1; -- 执行语句
END pro_1; -- 声明区结束
/
存储函数
sql
CREATE OR REPLACE FUNCTION func_1(id INT,name INT) RETURN INT
AS -- 声明区开始
v1 INT;
BEGIN -- 声明区开始
v1:=1; -- 执行语句
RETURN v1;
END func_1; -- 声明区结束
/