10

私はいくつかのOracleストアドプロシージャをこれらに書きました.20以上の入力パラメータがあり、それらから10以上のパラメータが必要です.すべてに何らかの値が必要で、そのためにnull値を受け入れたくありません. null 入力パラメーターを制限できるプロシージャ定義自体、または各値をチェックして、必要な値が null の場合は例外を発生させる必要がありますか?

4

2 に答える 2

18

これは古い質問ですが、別のオプションがあります (ここで説明します):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;

この型 (およびnumber_not_nullなど) は、ストアド プロシージャと同じパッケージで定義することも、さまざまな場所で使用する場合は独自のパッケージで定義することもできます。その後、これらの型であるパラメーターを宣言できます。

NULL引数として渡されると、非常に便利なエラー メッセージが表示されます。

cannot pass NULL to a NOT NULL constrained formal parameter
于 2013-08-22T12:29:57.293 に答える
6

PL/SQL では、それぞれをチェックする方法がわかりません。

外部ライブラリからストアド プロシージャを呼び出す場合、そのライブラリにその機能がある可能性があります。NULL 入力パラメーターが頻繁に必要とされるため、これはおそらくありそうにありません。

冗長コードを節約するために、値がnullの場合に例外を発生させるヘルパーPL/SQLプロシージャを作成できます。次に、プロシージャ宣言を丸呑みし、これらの呼び出しをヌル チェック プロシージャにクランクアウトする perl/python/groovy のチャンクを作成できます。

于 2008-09-22T18:27:16.727 に答える