Вы действительно имеете в виду «база данных» в определении термина Oracle? Или вы имеете в виду "схема"? Похоже, что опубликованный вами псевдокод предполагает, что SourceDatabase
и TargetDatabase
являются схемами в одной базе данных. Если вы действительно хотите указать, что они являются отдельными базами данных, вам потребуется использовать ссылки на базы данных для запросов к удаленным таблицам.
Предполагая, что вы имеете в виду схемы
DECLARE
l_src_schema varchar2(30) := 'Source';
l_dest_schema varchar2(30) := 'Destination';
l_sql_stmt varchar2(4000);
BEGIN
l_sql_stmt :=
'INSERT INTO ' || l_dest_schema || '.table_name ' ||
' SELECT * FROM ' || l_src_schema || '.table_name';
dbms_output.put_line( 'Preparing to execute: ' || l_sql_stmt;
execute immediate l_sql_stmt;
END;
Обратите внимание, что обычно хорошей идеей является создание оператора динамического SQL в отдельной переменной, которую вы можете распечатать, потому что это значительно упрощает отладку кода. В противном случае, если есть ошибка, нет способа извлечь фактический оператор SQL, который ваш код пытался выполнить.