Created on 22 Aug 2015 ;    Modified on 23 Aug 2016

Oracle: identifier 'UTL_FILE' must be declared

Ovvero: come passare 4 ore a caccia di una libreria di Oracle.

Se ottenete questo errore durante la compilazione di una funzione in un DB Oracle, è necessario controllare che la libreria UTL_FILE sia caricata.

A questo fine eseguire:

sqlplus sysadm/pwd@XE as sysdba @path_to_file/utlfile.sql

dove sysadm è un utente amministratore del DB.

Il file utlfile.sql contiene la definizione della libreria utl_file. Questo file è collocato nella directory dei file di amministrazione di Oracle. Ad esempio, in un mio sistema è presente nella directory C:\bin\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin.

Si noti: as sysdba. Senza questa dicitura, che eleva l'utenza al rango di SYS, non sono riuscito a caricare la libreria.

Dopo di che, assicurarsi che l'utente finale abbia i diritti di esecuzione. In sqlplus, sempre con utenza di amministrazione DB, eseguire:

 GRANT EXECUTE ON SYSTEM.utl_file TO user;

dove user è l'utente interessato.