【发布时间】:2011-12-07 02:12:51
【问题描述】:
我有一个 oracle 过程,我想将默认参数设置为 select 语句的结果,如下所示。
procedure foo( startID number : = max(x.id) from xtable x )
但是上面的代码是非法的语法。
【问题讨论】:
标签: oracle stored-procedures procedure
我有一个 oracle 过程,我想将默认参数设置为 select 语句的结果,如下所示。
procedure foo( startID number : = max(x.id) from xtable x )
但是上面的代码是非法的语法。
【问题讨论】:
标签: oracle stored-procedures procedure
您可以使用其他无效值来表示此含义,例如 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;
【讨论】: