ORA-00904 неверный идентификатор при обновлении таблицы с использованием оператора CASE - PullRequest
0 голосов
/ 22 мая 2018

Я создаю хранимую процедуру, в которой я обновляю таблицу, используя оператор CASE. 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 - другая таблица, в которой мы сопоставляем значение *Значение от 1013 * до user_in.Если они совпадают, тогда установите col1 из tbl в ABC, в противном случае установите XYZ.

При выполнении хранимой процедуры я получаю ошибку:

ORA-00904 неверный идентификатор

Как решить эту проблему, чтобы я мог легко обновить таблицу и хранимая процедура успешно скомпилируется.Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете создать его таким образом:

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;
...