Нет собственного вывода из execute immediate
или оператора, который вы выполняете.Когда вы усекаете таблицу в клиенте, она обычно сообщает что-то вроде:
Table truncated.
или
Table MY_TABLE truncated.
или аналогичные;но эти сообщения генерируются клиентом, выполняющим команду, а не базой данных.
Вы можете просто сгенерировать любое сообщение, которое хотите в своей процедуре, например:
...
LOOP
FETCH table_cur into tab_name;
exit when table_cur%notfound;
EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || tab_name;
DBMS_OUTPUT.PUT_LINE('Table ' || tab_name || ' truncated.');
END LOOP;
...
Если оператор truncateпо какой-либо причине произойдет сбой, тогда он выдаст исключение и не достигнет строки * 1013.
Для других типов операторов вы можете дополнительно использовать SQL%ROWCOUNT
, чтобы сообщить о количестве вставленных / обновленных / объединенных строк/ Удалено, чтобы имитировать то, что ваш клиент может показать для них, но это не относится к усечению.
Имейте в виду, что кто-то еще, выполняющий ваш код, может не иметь возможности отображать эти сообщения.