【发布时间】:2013-09-06 10:07:35
【问题描述】:
有什么区别
Begin
bc_any_package_pkg.anyProcedure;
End;
/
和
EXEC bc_any_package_pkg.anyProcedure;
/
我找不到有什么不同...
谢谢
【问题讨论】:
有什么区别
Begin
bc_any_package_pkg.anyProcedure;
End;
/
和
EXEC bc_any_package_pkg.anyProcedure;
/
我找不到有什么不同...
谢谢
【问题讨论】:
EXECUTE(简称 EXEC)是一个 SQL*Plus 命令,它基本上将一个 BEGIN END 块包裹在你的单行代码周围:
执行单个 PL/SQL 语句。
EXECUTE命令通常是 当您想要执行引用一个 PL/SQL 语句时很有用 存储过程。
在使用 SQL*Plus 时它们确实是一样的,尽管exec 的输入速度更快。
这不是标准的 PL/SQL,这意味着如果您使用除 SQL*Plus 之外的任何其他工具,exec 可能无法被识别。它也只适用于单行。
而BEGIN END 是标准的,可以与任何与PL/SQL 接口的工具一起使用。这样的块也可以跨越多行。
【讨论】:
exec 也不会像普通的 begin ... end 块那样替换 SQL*Plus 缓冲区;所以它对于像在查询运行之间更改 variable 绑定值这样的事情很方便。
exec 运行的任何内容,因此它具有潜在危险。 (正如我之前所说,exec 不会替换缓冲区;运行查询,执行 exec,然后执行 list 缓冲区以查看。)
EXEC(或完整形式的EXECUTE)是一个执行单个PL/SQL 语句的SQL Plus command。所以它达到了和写PL/SQL的匿名块完全一样的效果。
【讨论】: