Я пытаюсь собрать массив номеров ревизий.
Я буду использовать для удаления записей в нескольких таблицах аудита.
Так что я написал PLSQL, чтобы собрать этот массив и выполнить удаление других таблиц, основанных на условиях, используя этот массивoracle bulk delete: удалить из таблицы, где столбец в массиве
declare
type NumberArray is table of number index by binary_integer;
revisions NumberArray;
Begin
select rev bulk collect into revisions from (
select t.rev, row_number() over (partition by
column1,
column2
order by column3) rn
from table1 t)
where rn <> 1;
dbms_output.put_line(revisions.count || ' records found from table2 to be deleted');
delete from table2 where rev in (revisions);
dbms_output.put_line('deleted from table2');
Я получаю
PLS-00382: expression is of wrong type
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
Datatype из тахометра число в table1.
Почему PL/SQL, когда вы могли бы сделать это просто в SQL? –
данные очень огромные .. я хочу время работы – Sahu
Если данные огромны, то переключение контекста будет огромным, PL/SQL будет медленнее, гораздо медленнее, чем SQL. –