2008-09-22 166 views
9

我已經寫過一些Oracle存儲過程,這些過程中有20多個輸入參數,然後有更多的參數需要10個參數,我希望所有的都有一些值,並且不想接受null價值觀,是否有任何我可以聲明在過程定義本身,它可以限制空輸入參數或我將不得不檢查每個值,並提出異常,如果所需的值爲空?如何將NULL輸入參數限制在oracle存儲過程中

回答

5

在PL/SQL中我不知道如何檢查每一個。

如果您從外部庫調用存儲過程,該庫可能具有該功能。這可能不太可能,因爲經常需要NULL輸入參數。

您可以創建一個幫助程序PL/SQL過程,如果值爲零,如果它爲空以保存冗餘代碼,則會引發異常。然後,您可以編寫一大堆perl/python/groovy,它會吸引您的過程聲明,並將這些調用發送給您的空檢查過程。

+1

同上,我不認爲它可能 – 2008-09-22 19:07:33

9

我知道這是一個老問題,但還有另一種選擇(描述here):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL; 

您可以定義此類型(和number_not_null等),無論是在同一個包內的存儲過程,或者如果你想在很多地方使用它們,可以使用它們自己的包裝。然後你可以聲明這些類型的參數。

如果NULL被作爲參數傳遞,你會得到一個非常有用的錯誤消息:

cannot pass NULL to a NOT NULL constrained formal parameter 
相關問題