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