Esportare le Stored Procedure in Oracle

Esportare le Stored Procedure in Oracle

Ieri avevamo la necessità di esportare tutte le Stored Procedure di un db Oracle.

La versione è la 12g, ma penso che quello che vedremo vada bene anche per le versioni precedenti.

Prima vediamo una query "secca" che tira fuori i dati così come richiesti.

I dati sono poi da copiare su un editor di testo:

SELECT dbms_metadata.get_ddl(object_type, object_name) FROM user_objects WHERE object_type IN ('PROCEDURE');

Nella WHERE possiamo indicare anche altri parametri, come le funzioni:

SELECT dbms_metadata.get_ddl(object_type, object_name) FROM user_objects WHERE object_type IN ('PROCEDURE', 'FUNCTION');

Poi, ho anche un modo per esportare tutto direttamente su file.

Io, però, non sono riuscito a farlo funzionare; nello specifico mi da un errore sul path di salvataggio dei file.

Però più di una persona mi ha indicato che è tutto corretto, quindi potrebbe essere un problema mio.

Testatela:

DECLARE
 
    v_ddl_clob  CLOB;
   
BEGIN
    FOR c IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN ('PROCEDURE','FUNCTION'))
    LOOP
    
        v_ddl_clob := dbms_metadata.get_ddl(c.object_type, c.object_name);
        -- Scrive i file nella directory SQL_TEMP
        dbms_xslprocessor.clob2file(v_ddl_clob, 'SQL_TEMP', c.object_name ||'.sql');
     
    END LOOP;
   
END;

E' probabile che sbagli qualcosa nell'uso della funzione clob2file.

Enjoy!