【问题标题】:How can I set an oracle procedure's parameter default to the result of a select?如何将 oracle 过程的参数默认设置为选择的结果?
【发布时间】:2011-12-07 02:12:51
【问题描述】:

我有一个 oracle 过程,我想将默认参数设置为 select 语句的结果,如下所示。

procedure foo( startID number : = max(x.id) from xtable x )

但是上面的代码是非法的语法。

【问题讨论】:

    标签: oracle stored-procedures procedure


    【解决方案1】:

    您可以使用其他无效值来表示此含义,例如 NULL:

    PROCEDURE foo (p_id NUMBER DEFAULT NULL) IS
       l_startID NUMBER := p_id;
    BEGIN
       IF p_id IS NULL THEN
          SELECT max(id) INTO l_startID FROM xtable;
       END IF;
       ...
    END;
    

    如果你的函数/过程在一个包中,你也可以overload它:

    PROCEDURE foo (p_id NUMBER)
    [...]
    
    PROCEDURE foo IS
       l_startID NUMBER;
    BEGIN
       SELECT max(id) INTO l_startID FROM xtable;
       foo(l_startID);
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      相关资源
      最近更新 更多