我已经写了一些Oracle存储过程,其中有20多个输入参数,然后需要10个以上的参数,我希望所有的都有一些值,并且不想接受空值,是否有任何我可以在过程定义本身可以限制空输入参数或我是否必须检查每个值并在所需值为空时引发异常?
我知道这是一个老问题,但还有另一种选择(这里描述):
SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;
您可以number_not_null
在与存储过程相同的包中定义此类型(和等),或者如果要在许多位置使用它们,则可以在自己的包中定义.然后,您可以声明这些类型的参数.
如果NULL
作为参数传递,您将收到一条非常有用的错误消息:
cannot pass NULL to a NOT NULL constrained formal parameter
在PL/SQL中,我不知道如何检查每一个.
如果从外部库调用存储过程,则该库可能具有该功能.这可能不太可能,因为经常需要NULL输入参数.
您可以创建一个辅助PL/SQL过程,如果它为null,则会引发异常以保存冗余代码.然后你可以编写一个perl/python/groovy块来填充你的过程声明并将这些调用转移到你的null检查过程.