@Raushka

При работе с динамическим SQL ошибка недопустимый идентификатор, как можно исправить?

Все привет, ребят!
Можете помочь в решении задачи (Мне необходимо в таблице 'tablename' обновить определенные данные, данные которые берутся из general_table )
declare
  tablename varchar(255) := 'CoolTable';
BEGIN
  select functable (tablename) into tablename from dual;  --возвращает наличие таблицы 
  for rec in (select g.acode, g.clcode  from general_table g  where rownum = 1) loop
 if tablename is not null then
execute immediate 'update ' || tablename || ' set accli = ' || rec.acode || ', clcode= ' || rec.clcode || ''; --данные из таблы general_table обновляются в таблице tablename
end if;
end loop;
end;

ORA-00904: "8989123123": недопустимый идентификатор 
ORA-06512: на  line 16


Как в таблице 'tablename' так и в таблице general_table все поля типа Varchar2(100), в чем собственно еще может быть ошибка?
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
@galaxy
Литералы varchar надо кавычить:
execute immediate 'update ' || tablename || ' set accli = ''' || rec.acode || ''', clcode= ''' || rec.clcode || '''';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы