【问题标题】:How to restrict NULL input parameters into oracle stored procedure如何将 NULL 输入参数限制为 oracle 存储过程
【发布时间】:2010-09-12 02:31:25
【问题描述】:

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

【问题讨论】:

    标签: oracle stored-procedures


    【解决方案1】:

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

    SUBTYPE varchar2_not_null IS VARCHAR2 NOT NULL;
    

    您可以在与存储过程相同的包中定义此类型(和number_not_null 等),如果您想在很多地方使用它们,也可以在它们自己的包中定义。然后,您可以声明这些类型的参数。

    如果 NULL 作为参数传递,您将收到一条非常有用的错误消息:

    cannot pass NULL to a NOT NULL constrained formal parameter
    

    【讨论】:

      【解决方案2】:

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

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

      您可以创建一个辅助 PL/SQL 过程,给定一个值,如果它为 null 将引发异常以节省冗余代码。然后,您可以编写一大块 perl/python/groovy 来吞噬您的过程声明,并将这些调用发送到您的 null 检查过程。

      【讨论】:

      • 同上,我认为不可能
      • 这太疯狂了!我从 SQL Server 迁移后才发现这一点,在参数名称旁边说“NOT NULL”很简单。
      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2014-04-02
      相关资源
      最近更新 更多