gpt4 book ai didi

oracle - 覆盖/更改 Oracle 存储过程中的参数

转载 作者:行者123 更新时间:2023-12-02 04:09:51 27 4
gpt4 key购买 nike

我有一个这样的程序:

PROCEDURE UPDATE_STAT(p_STAT STATS.STATID%TYPE)
IS
...
BEGIN
...
if (X = 5)
THEN
p_Stat := 17;
END IF;
...
UPDATE TBL_A SET STATUS = p_Stat WHERE ...
...
END

问题是当我尝试编译它时出现错误:

PLS-00363: Expression 'p_Stat' cannot be used as assignment target.

有人有解决方法或解决方案吗?局部变量是唯一可以以这种方式使用的东西吗?该参数在函数体中被大量使用,因此用 case 语句替换每个实例将是一件痛苦的事情。提前致谢。

最佳答案

您将参数作为 IN 参数传递 - 这意味着您无法更改它,如果您考虑一下,这是有道理的。实际上,它是一个常数。

根据您想要执行的操作,您可以这样做:

PROCEDURE UPDATE_STAT(p_STAT STATS.STATID%TYPE)
IS
v_stat stats.statid%type;
...
BEGIN
v_stat := p_stat;
...
if (X = 5) THEN
v_Stat := 17;
END IF;
...
UPDATE TBL_A SET STATUS = v_Stat WHERE ...
...
END

关于oracle - 覆盖/更改 Oracle 存储过程中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37325466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com