Как ограничить входные параметры NULL в хранимой процедуре Oracle

StackOverflow https://stackoverflow.com/questions/116525

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top