Немедленно выполнить, чтобы добавить столбец и вставить данные в этот новый столбец - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно создать блок plsql, который добавит новый столбец в таблицу (с динамическим Sql), а затем вставит некоторые данные в этот новый добавленный столбец.

Когда я выполняю свой блок, я получаю сообщение о том, что мой столбец не определен, даже если он был добавлен до оператора вставки.

Есть ли у вас какие-либо идеи о том, что может быть причиной этой проблемы?

Как будто мой оператор вставки не знает, что новый столбец был добавлен.

1 Ответ

0 голосов
/ 12 сентября 2018

Если вы добавите новый столбец и обновите / вставите данные в новый столбец, используя динамический SQL, тогда он будет работать.Пример -

begin
  execute immediate 'ALTER TABLE table_name ADD column_name column-definition'; 
  execute immediate 'update table_name set column_name =''sample-data''';
  COMMIT ;
end;

Но, если вы добавите новый столбец с использованием динамического SQL и используете статический SQL для обновления / вставки, он выдаст сообщение об ошибке.
Причина - Статический SQL проверяется перед выполнением.
Пример -

begin
  execute immediate 'ALTER TABLE table_name ADD column_name column-definition'; 
  update table_name set column_name ='sample-data';
  COMMIT ;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...