Как ограничить входные параметры NULL в хранимой процедуре оракула - PullRequest
10 голосов
/ 22 сентября 2008

Я написал несколько хранимых процедур Oracle, в них более 20 входных параметров, и из них более 10 требуются параметры, я хочу все с некоторым значением и не хочу принимать нулевые значения для этого, Есть ли что-нибудь, что я могу объявить в определении самой процедуры, которое может ограничить нулевой входной параметр, или мне придется проверять каждое значение и вызывать исключение, если требуемое значение равно нулю?

Ответы [ 2 ]

12 голосов
/ 22 августа 2013

Я знаю, что это старый вопрос, но есть другой вариант (описан здесь ):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;

Вы можете определить этот тип (и number_not_null и т. Д.) Либо в том же пакете, что и ваши хранимые процедуры, либо в их собственном пакете, если вы хотите использовать их во многих местах. Затем вы можете объявить параметры этих типов.

Если NULL передается в качестве аргумента, вы получите очень полезное сообщение об ошибке:

cannot pass NULL to a NOT NULL constrained formal parameter
6 голосов
/ 22 сентября 2008

В PL / SQL я не знаю, как проверить каждый из них.

Если вы вызываете хранимую процедуру из внешней библиотеки, эта библиотека может иметь эту функцию. Это, вероятно, маловероятно, поскольку часто требуются входные параметры NULL.

Вы могли бы создать вспомогательную процедуру PL / SQL, которая при заданном значении вызовет исключение, если будет сохранено значение для избыточного кода. Затем вы могли бы написать кусок perl / python / groovy, который бы вырвал ваше объявление процедуры и вывел эти вызовы в вашу процедуру нулевой проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...