2008-09-22 167 views
9

我已经写过一些Oracle存储过程,这些过程中有20多个输入参数,然后有更多的参数需要10个参数,我希望所有的都有一些值,并且不想接受null价值观,是否有任何我可以声明在过程定义本身,它可以限制空输入参数或我将不得不检查每个值,并提出异常,如果所需的值为空?如何将NULL输入参数限制在oracle存储过程中

回答

5

在PL/SQL中我不知道如何检查每一个。

如果您从外部库调用存储过程,该库可能具有该功能。这可能不太可能,因为经常需要NULL输入参数。

您可以创建一个帮助程序PL/SQL过程,如果值为零,如果它为空以保存冗余代码,则会引发异常。然后,您可以编写一大堆perl/python/groovy,它会吸引您的过程声明,并将这些调用发送给您的空检查过程。

+1

同上,我不认为它可能 – 2008-09-22 19:07:33

9

我知道这是一个老问题,但还有另一种选择(描述here):

SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL; 

您可以定义此类型(和number_not_null等),无论是在同一个包内的存储过程,或者如果你想在很多地方使用它们,可以使用它们自己的包装。然后你可以声明这些类型的参数。

如果NULL被作为参数传递,你会得到一个非常有用的错误消息:

cannot pass NULL to a NOT NULL constrained formal parameter 
相关问题