【问题标题】:Difference between BEGIN/END and EXECBEGIN/END 和 EXEC 的区别
【发布时间】:2013-09-06 10:07:35
【问题描述】:

有什么区别

Begin
 bc_any_package_pkg.anyProcedure;
End;
/

EXEC bc_any_package_pkg.anyProcedure;
/

我找不到有什么不同...

谢谢

【问题讨论】:

    标签: sql oracle plsql sqlplus


    【解决方案1】:

    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 绑定值这样的事情很方便。
    • @AlexPoole exec 是否需要 /(斜杠)?
    • @Roland - 不;它将重新执行命令缓冲区中 之前 exec 运行的任何内容,因此它具有潜在危险。 (正如我之前所说,exec 不会替换缓冲区;运行查询,执行 exec,然后执行 list 缓冲区以查看。)
    【解决方案2】:

    EXEC(或完整形式的EXECUTE)是一个执行单个PL/SQL 语句的SQL Plus command。所以它达到了和写PL/SQL的匿名块完全一样的效果。

    【讨论】:

    • exec 是否需要 /(斜杠)?
    • 不,它不需要斜线
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2013-12-02
    • 2019-07-06
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    相关资源
    最近更新 更多