BEGIN/END和EXEC之间的区别

Fir*_*tex 3 sql oracle plsql sqlplus

有什么区别

Begin
 bc_any_package_pkg.anyProcedure;
End;
/
Run Code Online (Sandbox Code Playgroud)

EXEC bc_any_package_pkg.anyProcedure;
/
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Vin*_*rat 6

EXECUTE(简称EXEC)是一个SQL*Plus命令,它基本上BEGIN END围绕你的单行程序包裹一个块:

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

使用SQL*Plus时它们确实相同,但exec输入速度更快.

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

虽然BEGIN END是标准的,但可以与任何与PL/SQL接口的工具一起使用.这样的块也可以跨越多条线.

  • `exec`也不会替换SQL*Plus缓冲区,因为正常的`begin ... end`块会; 所以它对于在查询运行之间更改`variable`绑定值的值这样的事情很方便. (2认同)