簡體   English   中英

pl / sql中的過程中的多個/嵌套的開始/結束,函數語句

[英]multiple/nested begin/end, function statements in procedures in pl/sql

我是PL / SQL的新手,並且不知道如何使用良好的實踐將它編寫得井井有條。 我閱讀並觀看了視圖教程,但是這些示例比我的過程要容易得多。 為了創建一個“大的”可讀,干凈的過程,我將使用多個和/或嵌套的開始/結束和函數,如下所示:

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

begin.... and so on

但是我不確定這是否是編寫PL / SQL的精簡方法。 我需要在不同的表上進行多次選擇,查找使用它們的行,然后對不同表中的行進行插入和更新。 所有這些只需一個過程。 通常,我將對新的Statement使用begin / end,僅對本地使用的變量和函數的聲明進行聲明的結果的操作。 這是個好習慣嗎?

謝謝你的幫助

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;

如果該過程很復雜且包含大量步驟,則可以考慮將其分解為較小的可重用模塊的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM