Надеюсь, что вы можете помочь мне решить эту проблему ниже.
ДЕТАЛИ : я пытаюсь создать хранимую процедуру для своего проекта фабрики данных Azure, где я могу передать имя переменной таблицы черезчтобы сказать SQL Server, чтобы удалить строки.
Все это является частью инструмента ERP с транзакционными данными.Я бы удалил строки, которые находятся в цели, но изменены в источнике.
Пример : rowid 1 - € 100 в целевом объекте, но позже изменяется в источнике до € 80.Затем мне нужно удалить эту строку с целевым значением 100 евро и скопировать новое значение из источника с тем же идентификатором строки в цель.
Я мигрирую из среды Oracle в среду Microsoft.В Oracle у меня есть этот SQL для хранимой процедуры:
create or replace procedure AAAAA_delete
as
cursor c_del
is
select 'delete from ' ||table_name ||' a where not exists (select 1 from ' ||replace(table_name,'AAAAA','BBBBB') ||' b where a.rowid = b.rowid)' deletions
from all_tables
where table_name like 'AAAAA%'
and table_name not like 'AAAAA_LOAD%'
and table_name not in ('AAAAA_TIME','AAAAA_CONFIGURATION')
order by 1;
begin
for r_del in c_del
loop
execute immediate r_del.deletions;
commit;
end loop;
end;
** имена были изменены на AAAA и BBBB с целью публикации кода **
Мне интересно, как я могу преобразовать это в MS SQL.
ПОЧЕМУ? : весь процесс ETL в фабрике данных Azure основан на переменных.Все имена таблиц и т. Д. Хранятся в таблице метаданных.И это зависит от + - 70 таблиц.
ВОПРОС : можно ли создать общую хранимую процедуру для удаления строк в зависимости от имени, через которое я прохожу.