Я новичок в хранимой процедуре и в PL / SQL.Существует существующая процедура для копирования данных из одной таблицы в другую.Я хочу переписать хранимую процедуру, чтобы принимать имена таблиц и столбцов в качестве аргументов. Я нашел решение, но не смог найти надежное решение.
Также планирование добавления имен столбцов в качестве аргумента, чтобы имена столбцов не добавлялись неоднократно в нескольких хранимых процедурах, использующих одни и те же таблицы и столбцы, помогает сократить объем обслуживания при добавлении / удалении имен столбцов.,Код был добавлен.
Кто-нибудь может мне помочь с этим?Любой пример кода будет очень полезным.
create or replace procedure copy_data(startDate DATE, endDate DATE,
mainTable varchar2, subTable varchar2, cpyTbl varchar2)
IS
commit_size NUMBER :=1000;
existing_columns NUMBER;
after_deletion_columns NUMBER;
removed_columns NUMBER;
TYPE order_ids IS TABLE OF subTable.id%TYPE INDEX BY PLS_INTEGER;
removable_order_ids order_ids;
bulk_errors EXCEPTION;
PRAGMA EXCEPTION_INIT (bulk_errors, -24381);
CURSOR C1 is select id FROM subTable where ord_id in (select ord_id from
mainTable where tmstmp BETWEEN startDate AND endDate);
BEGIN
open C1;
LOOP
FETCH C1 BULK COLLECT INTO removable_order_ids LIMIT commit_size;
forall indx in 1..removable_order_ids.COUNT
INSERT INTO cpyTbl (id, ord_id, name, phon_nbr)
select id, ord_id, name, phon_nbr from subTable
where ord_id = removable_order_ids(indx) LOG ERRORS INTO
ERR$_cpyTbl('INSERT') REJECT LIMIT UNLIMITED;
COMMIT;
EXIT WHEN removable_order_ids.COUNT < commit_size;
END LOOP;
COMMIT;
конец;