Я пытаюсь обновить все столбцы типа NVARCHAR2 до некоторой случайной строки в моей базе данных. Я повторил все столбцы в базе данных типа nvarchar2 и выполнил инструкцию по обновлению для каждого столбца.Oracle: обновление нескольких столбцов с помощью динамического запроса
for i in (
select
table_name,
column_name
from
user_tab_columns
where
data_type = 'NVARCHAR2'
) loop
execute immediate
'update ' || i.table_name || 'set ' || i.column_name ||
' = DBMS_RANDOM.STRING(''X'', length('|| i.column_name ||'))
where ' || i.column_name || ' is not null';
Вместо того, чтобы оператор обновления для каждого столбца типа NVARCHAR2, я хочу, чтобы обновить все NVARCHAR столбцы определенной таблицы с помощью одного оператора обновления для эффективности (то есть, один оператор обновления за 1 таблицы) , Для этого я попытался объединить все столбцы nvarchar в таблице во временное хранилище. Но я застрял в написании динамического оператора обновления для этого. Не могли бы вы мне помочь? Заранее спасибо!
имеет внутренний контур для всех столбцов конкретной таблицы, и добавить столбцы для обновления. Это что-то, что вам нужно выполнить многократно или один раз? Если один раз, просто напишите сценарий, который испускает другой скрипт с обновлениями, а затем запустите второй скрипт. – OldProgrammer
Добавление столбцов в «SET» - это место, где я застрял. Невозможно записать выбор внутри набора. Есть ли у вас какие-либо идеи о том, как добавить? – rav
Создайте обновление со строкой, добавьте к ней, затем выполните немедленную строку. – OldProgrammer