Я хочу написать хранимую процедуру PLSQL, которая принимает имя таблицы в качестве аргумента. Эта таблица является исходной таблицей. Теперь в моей процедуре я хочу манипулировать полями этой таблицы. EX: Я хочу вставить записи этой исходной таблицы в другую таблицу целей, имя которой равно XYZ_<source table name>
. Имена столбцов для исходных и целевых таблиц одинаковы. Но в целевой таблице могут быть дополнительные поля. Как мне это сделать? Порядок имен столбцов не одинаковый.общая хранимая процедура в oracle
ответ
Вам нужно будет строить инструкцию INSERT динамически.
create or replace procedure gen_insert
(p_src_table in user_tables.table_name%type
, p_no_of_rows out pls_integer)
is
col_str varchar2(16000);
begin
for rec in (select column_name
, column_id
from user_tab_columns
where table_name = p_src_table
order by column_id)
loop
if rec.column_id != 1 then
col_str := col_str || ',' || rec.column_name;
else
col_str := rec.column_name;
end if:
end loop;
execute immediate 'insert into xyz_' || p_src_table || '('
|| col_str || ')'
|| ' select ' || col_str
|| ' from ' || p_src_table;
p_no_of_rows := sql%rowcount;
end;
/
Возможно, вы захотите включить обработку ошибок и другие улучшения.
редактировать
отредактировав свой вопрос я вижу, у вас есть особые требования для обозначения целевой таблицы, которая была затенена на SO форматирования.
@apc: Theat was great.Thanks много. – user223541
Вы можете сделать это с помощью Dynamic SQL. Вот ссылка на основную информацию на Oracle Dynamic SQL
+1 правильный. Нельзя использовать параметры запроса для имен таблиц, поэтому динамический SQL является единственным решением. –
- 1. Общая хранимая процедура
- 2. общая хранимая процедура
- 3. Oracle Хранимая процедура
- 4. cfquery oracle хранимая процедура
- 5. Oracle хранимая процедура застряла
- 6. oracle sql хранимая процедура
- 7. Планирование Хранимая процедура «ORACLE»
- 8. Запуск Oracle хранимая процедура
- 9. Хранимая процедура ОШИБКА в Oracle
- 10. Динамическая хранимая процедура в Oracle
- 11. Oracle Хранимая процедура Структурированные параметры
- 12. Oracle Хранимая процедура с Spotfire
- 13. oracle db хранимая процедура синтаксис
- 14. Oracle хранимая процедура не работает
- 15. Общая хранимая процедура для задержки столбца таблицы
- 16. Ошибка в Oracle вставка хранимая процедура
- 17. Oracle Хранимая процедура не выполняется в .NET?
- 18. Внутренний запрос в Oracle Хранимая процедура
- 19. Вызов хранимая процедура внутри хранимая процедура
- 20. Oracle хранимая процедура DB Ссылка на вопрос
- 21. oracle call хранимая процедура внутри select
- 22. Oracle хранимая процедура - Loop внутри курсора
- 23. Oracle - Вставка хранимая процедура FOREIGN KEY
- 24. Oracle хранимая процедура varray за счет count
- 25. Ошибки компиляции для Oracle - хранимая процедура
- 26. Oracle Хранимая процедура «Обнаружена ошибка символа ...»
- 27. Java хранимая процедура UnsupportedClassVersionError
- 28. Throw '&' String Url on Oracle хранимая процедура
- 29. Oracle хранимая процедура с использованием временных таблиц
- 30. C# DataTable для Oracle Хранимая процедура
Предоставьте инструкцию обновления, которую вы хотите запустить, с заполнителями для переменных. –
@omg ponies: спасибо, что ответили. Может, я попробовал несколько примеров кода? – user223541