Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в Update при использовании ассоциативного массива / 2 сообщений из 2, страница 1 из 1
03.02.2020, 10:31
    #39921655
des80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в Update при использовании ассоциативного массива
Есть тип type t_rounded_rrp_tbl is table of number index by varchar2(1000 char)
И переменная этого типа v_rounded_rrp_tbl t_rounded_rrp_tbl

При выполнении такого апдейта все работает нормально:
update
dg_calc_hist_rates t
set
t.fact_rrp_sc = t.fact_rrp_sc * 2
where
t.part_key = p_collection_code_mc;

А в апдейте с использованием v_rounded_rrp_tbl возникает ошибка компиляции
update
dg_calc_hist_rates t
set
t.fact_rrp_sc = v_rounded_rrp_tbl('RUR' || t.fact_rrp_sc)
where
t.part_key = p_collection_code_mc;

Ошибка t.fact_rrp_sc must be declared.

Кто нибудь может объяснить из за чего она возникает и как ее обойти сделав апдейт из коллекции по ключу?
...
Рейтинг: 0 / 0
03.02.2020, 11:05
    #39921674
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в Update при использовании ассоциативного массива
des80
t.fact_rrp_sc = v_rounded_rrp_tbl('RUR' || t.fact_rrp_sc)
Ошибка t.fact_rrp_sc must be declared.
Кто нибудь может объяснить из за чего она возникает
Выражение справа пытается резолвится в PL/SQL, потому что не может разрезолвится в SQL. Но и там не может, потому что вернуться обратно в SQL нельзя.
des80
и как ее обойти сделав апдейт из коллекции по ключу?
1)
Код: plsql
1.
forall … where 'RUR' || t.fact_rrp_sc = v_rounded_rrp_tbl(i) …

2) merge по неассоциативу.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка в Update при использовании ассоциативного массива / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]