Изменение таблицы в plsql с помощью курсора - PullRequest
0 голосов
/ 25 апреля 2018

Как добавить новый столбец в существующую таблицу с помощью курсора?

Например, каков будет ответ на вопрос, заданный ниже?

написать программу курсора дляувеличьте зарплату на 5%, которые работают в отделе 20. а также вставьте обновленную зарплату в новый столбец с именем new_sal

У меня проблема со второй частью.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Обратите внимание, что изменения, внесенные в структуру таблицы с помощью функции непосредственного выполнения, недоступны для прямых операторов sql в том же блоке plsql.то есть блок ниже не будет работать, так как оператор обновления не найдет столбец new_sal.

BEGIN
  EXECUTE immediate 'alter table tab_name add new_sal number';
  UPDATE tab_name SET new_sal = salary + (salary * 0.05) ;
END;

Правильный способ сделать это ниже

BEGIN
  EXECUTE immediate 'alter table tab_name add new_sal number';
  EXECUTE IMMEDIATE 'UPDATE tab_name SET new_sal = salary + (salary * 0.05)' ;
END;
0 голосов
/ 25 апреля 2018

Это был бы динамический SQL, поскольку вы не можете обычно выполнять DDL в PL / SQL.Как то так:

begin
  execute immediate 'alter table your_table add new_sal number';
end;
...