Как ограничить входные параметры NULL в хранимой процедуре Oracle
-
02-07-2019 - |
Вопрос
Я написал некоторые хранимые процедуры Oracle, в которых содержится более 20 входных параметров, и из них требуется более 10 параметров. Я хочу, чтобы все имели какое-то значение, и не хочу принимать для этого нулевые значения. Есть ли что-нибудь, что я могу объявить в Само определение процедуры, которое может ограничить нулевой входной параметр, или мне придется проверять каждое значение и вызывать исключение, если требуемое значение равно нулю?
Решение
В PL/SQL я не знаю, как проверить каждый из них.
Если вы вызываете хранимую процедуру из внешней библиотеки, эта библиотека может иметь такую функциональность.Вероятно, это маловероятно, поскольку часто требуются входные параметры NULL.
Вы можете создать вспомогательную процедуру PL/SQL, которая по заданному значению будет вызывать исключение, если оно равно нулю, чтобы сэкономить на избыточном коде.Затем вы можете написать кусок perl/python/groovy, который будет поглощать объявление вашей процедуры и запускать эти вызовы вашей процедуры проверки на нулевое значение.
Другие советы
Я знаю, что это старый вопрос, но есть другой вариант (описан здесь):
SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;
Вы можете определить этот тип (и number_not_null
, и т. д.) либо в том же пакете, что и ваши хранимые процедуры, либо в отдельном пакете, если вы хотите использовать их во многих местах.Затем вы можете объявить параметры этих типов.
Если NULL
передается в качестве аргумента, вы получите очень полезное сообщение об ошибке:
cannot pass NULL to a NOT NULL constrained formal parameter