Home / Database & Server / Database & Server / Esportare le Stored Procedure in Oracle
Mattepuffo

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!