【问题标题】:multiple/nested begin/end, function statements in procedures in pl/sqlpl/sql 过程中的多个/嵌套开始/结束、函数语句
【发布时间】:2018-05-17 09:15:05
【问题描述】:

我是 PL/SQL 的新手,不知道如何编写干净和良好的实践。我阅读并观看了视图教程,但这些示例比我的程序要容易得多。要创建一个“大”的可读、干净的过程,我会使用多个和/或嵌套的开始/结束和函数,如下所示:

begin statement... function... end function exception end

开始....等等

但我不确定这是否是编写 PL/SQL 的一种精简方式。我需要在不同的表上进行多项选择,查找使用它们的行并插入和更新不同表中的行。所有这一切都在一个程序中完成。一般来说,我会为新语句使用开始/结束,声明仅用于本地使用的变量和函数,以对语句结果进行操作。这是一个好习惯吗?

感谢您的帮助

【问题讨论】:

标签: sql oracle stored-procedures plsql


【解决方案1】:

begin...end; 一个人什么都不做。如果嵌套块具有在该级别有意义的declareexception,则仅需要嵌套块。

例如,这里的begin/end 内部关键字是没有意义的,您可以将它们删除:

begin
    ...

    begin
        processing steps
    end;

    ...
end;

如果我们只想处理嵌套块中的某些异常(例如,处理特定查找的no_data_found 异常,或utl_file 的文件操作),嵌套块很有用。这通常比在最后使用异常处理程序要好,尤其是对于具有大量处理步骤的过程:

begin
    ...

    begin
        processing steps
    exception
        when no_data_found then...
    end;

    ...
end;

类似地,我们可以只在嵌套块的范围内声明一个局部变量或常量等。与异常示例相比,这可能是一个不太常见的要求,但在某些情况下它可能有用:

begin
    ...

    declare
        x constant integer := whatever();
    begin
        processing steps using x
    end;

    ...
end;

如果过程很复杂,包含大量步骤,您可以考虑将其分解为更小的可重用模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2014-04-20
    • 2017-09-18
    • 1970-01-01
    相关资源
    最近更新 更多