2013-07-14 51 views
0

我對程序和東西尤其是Oracle很陌生。 我一直在學習PLSQL的基礎知識,這與實際的編程有很大不同。這種sql邏輯,函數或過程?

但我不確定公約和標準。

鑑於: 我有一個邏輯,根據參數(更像是一個批處理過程)接受參數,刪除,插入不同表上的記錄,並返回一個標誌,如果一切都成功或不成功。

問題: 1.)該邏輯是否適合作爲函數或過程? *基於我研究的內容,當我們想要返回某些東西時,我們使用函數,當我們想要執行(插入/更新/刪除)某些東西時,我們使用該過程。但我的邏輯確實如此。

2.)我可以在PLSQL中的函數中調用一個過程嗎?

回答

1

1)是的,這絕對是一個安裝程序

2)你可以調用這兩個過程中的程序和功能

如果批處理過程變得複雜,試圖將其拆分成多個子程序(程序和函數)將它們封裝到一個plsql包中。這一切都取決於你的過程的複雜性

+0

感謝您的快速回復先生!是的,我已閱讀有關包裝。 我有一個後續問題先生,所以如果我把所有東西放在一個包中,我會有1個proc(像一個主要方法或類似的東西)調用所有其他函數/特效。它是否正確? – Incognito

+1

是的,這是正確的。你可以在程序包中創建你想運行的每個任務的程序,然後有一個主程序以你想要的任何順序執行這些任務等等 – xionutz2k

+1

這是一個設計決定。就像使用Java一樣,我們可以決定在包規範中公開哪些過程和函數,以及哪些要在正文中保持私有。大多數軟件包沒有類似於'main()'方法的東西;相反,他們有幾種不同的公共程序,即使該程序包是圍繞單個業務事務組織的。 – APC

1

「如果一切都成功或不成功,將返回一個標誌。」

不要這樣做。國旗很糟糕,因爲它們很容易被忽視。如果被調用的程序失敗,它應該引發異常。例外情況很好,因爲調用程序必須承認它們,並決定如何處理它們。

如果被調用程序成功,則不需要執行任何操作;在沒有提出異常的情況下,調用程序只是假設成功並繼續前進。

「我將調用Java中這些程序」

的Java處理異常。 PL/SQL異常將拋出Java SQLException,因此在調用存儲過程時使用trycatch塊。您可以使用SQLException.getCode()來獲取錯誤編號。 Every Oracle error has one。另外,我們可以使用-20999到-20000的魔術範圍來定義自定義的異常。 Find out more

+0

謝謝,先生,我會牢記這一點,並閱讀關於處理PLSQL中的異常。我的頭頂上的想法是捕捉異常,然後將值設置爲一個標誌。這是不是一個壞習慣? P.S.我將在Java中調用這些過程:) – Incognito