多个/嵌套的开始/结束,pl / sql过程中的函数语句

时间:2018-05-17 09:15:05

标签: sql oracle stored-procedures plsql

我是PL / SQL的新手,不知道如何用干净利落的方式编写它。我阅读并观看了一个视图教程,但这些示例比我的程序简单得多。要创建一个“大”可读,干净的过程,我将使用多个和/或嵌套的开始/结束和这样的函数:

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

begin.... and so on

但我不确定这是否是编写PL / SQL的精简方式。我需要在不同的表上进行多次选择,查找行使用它们和isert并更新不同表中的行。所有这一切都在一个程序中。通常,我将使用begin / end作为新语句,仅声明本地使用的变量和函数来对语句结果进行操作。这是不错的做法?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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;

如果程序很复杂且步骤繁多,您可以考虑将其分解为更小的可重用模块的方法。