Oracle PL/SQL:为 IN 变量分配新值
我有一个过程定义为:
CREATE OR REPLACE PROCEDURE foo (
AS_OF_DATE_IN IN DATE DEFAULT TRUNC(sysdate)-1
) AS ...
可以通过以下方式执行:
-- passes '11-NOV-2011'
exec foo('11-NOV-2011');
--set DEFAULT value (yesterday's date)
exec foo();
--makes things more difficult, as default value isn't set
exec foo(NULL);
我想要做的是:
AS_OF_DATE_IN:=NVL(AS_OF_DATE_IN, TRUNC(sysdate)-1);
但它会产生重新分配错误。
除了用 NVL() 包装 AS_OF_DATE_IN 的所有用法之外,是否有更有效的方法来处理这种情况?
** 编辑 ** 我犯了一个相当愚蠢的错误——我正在编写一个过程,而不是一个函数。该过程不返回值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在函数内使用局部变量:
You can use a local variable inside the function:
您有两个问题:
1)您传递的是日期还是变量。您不能更改传入的字符串值。
2) 您可以将该值设为“IN OUT”参数,然后为其赋值。
例子:
You have two issues:
1) you are passing in a date vs. a variable. You can not change the string value that is passed in.
2) You can make the value an "IN OUT" parameter and then you can assign it a value.
Example: