BEGIN/END和EXEC之间的区别

5
什么是“between”的区别?
Begin
 bc_any_package_pkg.anyProcedure;
End;
/

并且。
EXEC bc_any_package_pkg.anyProcedure;
/

我找不到是否有任何区别...

谢谢

2个回答

10

EXECUTE(简称EXEC)是一个SQL*Plus命令,它基本上将BEGIN END块包装在你的一行代码周围:

执行单个PL/SQL语句。当您想要执行引用存储过程的PL/SQL语句时,EXECUTE命令通常非常有用。

在使用SQL*Plus时,它们确实是相同的,尽管exec打字更快。

这不是标准的PL/SQL,这意味着如果您使用除SQL*Plus之外的任何其他工具,则可能无法识别exec。 它也仅适用于单行。

BEGIN END是标准的,并且可以与任何与PL/SQL接口的工具一起使用。 这些块还可以跨越多行。


3
exec 命令不能像普通的 begin ... end 块一样替换 SQL*Plus 缓冲区,因此当需要在查询运行之间更改 variable 参数值时很方便使用。 - Alex Poole
@AlexPoole exec需要斜杠(/)吗? - Roland
1
@Roland - 不行;它将重新执行exec运行之前在命令缓冲区中的任何内容,因此可能存在危险性。(正如我之前所说,exec不会替换缓冲区;运行查询,执行exec,然后列出缓冲区以查看。) - Alex Poole

1

EXEC(或其完整形式EXECUTE)是一个SQL Plus命令,用于执行单个PL/SQL语句。因此,它的效果与编写一个PL/SQL匿名块完全相同。


exec 命令需要 /(斜杠)吗? - Roland
不需要斜杠。 - Tony Andrews

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接