我已经写了一些Oracle存储过程,其中有20多个输入参数,然后需要10个以上的参数,我希望所有的都有一些值,并且不想接受空值,有什么我能做的吗?在Procedure defination本身中声明可以限制null输入参数或者我是否必须检查每个值并在所需值为null时引发异常?

有帮助吗?

解决方案

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

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

您可以创建一个帮助程序PL / SQL过程,如果它为null,则会引发异常以保存冗余代码。然后你可以编写一个perl / python / groovy块来填充你的过程声明并将这些调用转移到你的null检查过程。

其他提示

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

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