marvinamorim

Untitled

Feb 22nd, 2021
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.41 KB | None | 0 0
  1. DECLARE
  2. v_object_file UTL_FILE.FILE_TYPE;
  3. v_object_filename VARCHAR2(1000);
  4. v_single_file UTL_FILE.FILE_TYPE;
  5. v_single_filename VARCHAR2(1000) := 'single_file_ddl.sql';
  6. v_folder_dir VARCHAR2(1000) := 'filepath';
  7. v_owner VARCHAR2(20) := 'SCHEMA';
  8. BEGIN
  9.   /*This procedure will generate 2 types of file:
  10.     A single file with all the ddl inside it.
  11.     One file for each object in the project.*/
  12.   v_single_file := UTL_FILE.FOPEN(v_folder_dir, v_single_filename, 'W');
  13.   FOR c1 IN (
  14.     SELECT DBMS_METADATA.get_ddl(OBJECT_TYPE, OBJECT_NAME, OWNER) ddl_text, OBJECT_NAME, OBJECT_TYPE
  15.       FROM ALL_OBJECTS
  16.      WHERE OWNER = UPPER(v_owner)
  17.        AND OBJECT_TYPE NOT IN ('LOB','JOB','PACKAGE BODY')
  18.        AND OBJECT_NAME NOT LIKE ('APEX$%') --Ignore apex internal objects
  19.      ORDER BY OBJECT_TYPE, OBJECT_NAME
  20.   ) LOOP
  21.     /*Object file*/
  22.     v_object_filename := c1.OBJECT_TYPE||'_'||c1.OBJECT_NAME||'.sql';
  23.     v_object_file := UTL_FILE.FOPEN(v_folder_dir, v_object_filename, 'W');
  24.     UTL_FILE.put_line(v_object_file, c1.ddl_text);
  25.     UTL_FILE.put_line(v_object_file, '/');
  26.     UTL_FILE.FCLOSE(v_object_file);
  27.     /*Single file*/
  28.     UTL_FILE.put(v_single_file, '--'||v_object_filename);
  29.     UTL_FILE.put_line(v_single_file, c1.ddl_text);
  30.     UTL_FILE.put_line(v_single_file, '----------------------------');
  31.     UTL_FILE.put_line(v_single_file, '/');
  32.   END LOOP;
  33.   UTL_FILE.FCLOSE(v_single_file);
  34. END;
  35.  
Advertisement
Add Comment
Please, Sign In to add comment