ORA-00904 使用 CASE 语句更新 table 时标识符无效
ORA-00904 invalid identifier while update table using CASE statement
我创建了一个存储过程,在其中我使用 CASE
语句更新了 table。 user_in是存储过程的入参。
这里是 UPDATE
语句:
update tbl
set col1 = CASE WHEN (user_in = txt.col3) THEN 'ABC'
ELSE 'XYZ'
END
where col2 = v_col2;
其中 user_in
和 v_col2
是输入参数,txt
是另一个 table 我们将 col3
的值匹配到 user_in
值。如果匹配,则将 tbl
的 col1
设置为 ABC
,否则设置为 XYZ
.
执行存储过程时,出现错误:
ORA-00904 invalid identifier
如何解决此问题以便我可以轻松更新 table 并且存储过程将成功编译。谢谢
您可以这样创建:
create or replace procedure pr_upd_tbl( v_col2 int, user_in int ) is
begin
update tbl t
set col1 = CASE
WHEN (user_in = ( select col3 from txt x where x.id = t.id ) ) THEN
'ABC'
ELSE
'XYZ'
END
where col2 = v_col2;
end;
我创建了一个存储过程,在其中我使用 CASE
语句更新了 table。 user_in是存储过程的入参。
这里是 UPDATE
语句:
update tbl
set col1 = CASE WHEN (user_in = txt.col3) THEN 'ABC'
ELSE 'XYZ'
END
where col2 = v_col2;
其中 user_in
和 v_col2
是输入参数,txt
是另一个 table 我们将 col3
的值匹配到 user_in
值。如果匹配,则将 tbl
的 col1
设置为 ABC
,否则设置为 XYZ
.
执行存储过程时,出现错误:
ORA-00904 invalid identifier
如何解决此问题以便我可以轻松更新 table 并且存储过程将成功编译。谢谢
您可以这样创建:
create or replace procedure pr_upd_tbl( v_col2 int, user_in int ) is
begin
update tbl t
set col1 = CASE
WHEN (user_in = ( select col3 from txt x where x.id = t.id ) ) THEN
'ABC'
ELSE
'XYZ'
END
where col2 = v_col2;
end;