SQL generate and excecute

Mit dem folgenden Statement (Anonymer Block) kann DDL erstellt und ausgeführt werden.

set serveroutput on;
set serveroutput on size unlimited;
--------------------------------------------------------------------------------
-- 24.03.2020 SHESS Dieser Block entfernt Views innerhalb eines Schemas.
--                  Die zu löschende Views werden durch die 
--                  WHERE-CLAUSE eingeschränkt.
-- 
--
--

DECLARE
   ddl2excecute VARCHAR2(8096) ;
   i NUMBER := 1;
BEGIN
--
  FOR txt IN (  SELECT 'DROP VIEW '||view_name ddl2excecute ,view_name
                  FROM user_views 
                 WHERE SUBSTR(view_name,1,3)= 'VIEW_PREFIX'
              ORDER BY view_name
             )
  LOOP
   
     ddl2excecute := txt.ddl2excecute;
     EXECUTE IMMEDIATE  ddl2excecute;
     DBMS_OUTPUT.PUT_LINE(' View entfernt: ' ||LPAD(TO_CHAR (i),3,'0')|| ' ' || txt.view_name);
     i := i +1;

  END LOOP;
EXCEPTION
  WHEN OTHERS THEN RAISE;
  DBMS_OUTPUT.PUT_LINE(' Ora  ' ||SQLERRM);
--
END;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert