单机程序
create procedure proc1
(
begin
end;
)
存储过程
create package pkg1
(
procedure proc2
begin
end;
)
发布于 2015-07-08 17:16:57
来自CREATE PROCEDURE
的oracle文档
独立过程是存储在数据库中的过程(执行特定操作的子程序)。
nested procedure是位于PL/SQL块或程序包中的过程。
从CREATE PACKAGE
文档中:
CREATE package语句创建或替换存储包的规范,存储包是作为一个单元存储在数据库中的相关过程、函数和其它程序对象的封装集合。包规范声明了这些对象。随后指定的包体定义了这些对象。
独立过程和包中嵌套的过程都存储(编译)在数据库中--“存储”过程也是如此。匿名PL/SQL块中定义的过程不是“存储”过程。
这不是存储过程:
DECLARE
n NUMBER := 1;
PROCEDURE incr( a IN OUT NUMBER ) IS
BEGIN
a := a + 1;
END;
BEGIN
incr(n);
DBMS_OUTPUT.PUT_LINE(n);
END;
/
包中的嵌套过程和独立过程之间并没有太大的区别:
独立过程是使用PROCEDURE ...
.
CREATE PROCEDURE ...
在PL/SQL块中定义的,而包中的(公共)嵌套过程总是需要过程定义( AS BEGIN ... END;
部分),而包中的(公共)嵌套过程只声明过程标题( PROCEDURE NAME(...)
部分),然后在包体中将重新声明标题并定义过程definition.
中定义
发布于 2015-07-08 15:31:57
这两个都是存储过程,因为它们都存储在数据库中,可以在以后调用。
将过程放在包中只是组织它们的一种整洁的方式。它有助于记住一起更新所有相关的过程,保持你的创建脚本整洁,等等。主要的功能差异是能够授予和撤销整个包的特权,而不是必须独立管理十几个“独立”过程。
https://stackoverflow.com/questions/31286156
复制相似问题