Oracle/PLSQL: extraer la ruta del directorio de la ruta completa del archivo

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: extraer la ruta del directorio de la ruta completa del archivo

Problema: tengo una cadena que contiene la ruta completa a un archivo. ¿Cómo extraer la ruta del directorio de una cadena en Oracle?

Por ejemplo, si tengo una ruta de archivo completa como esta:

'c:windowstempexample.xls'

Quiero recuperar lo siguiente:

'c:windowstemp'

R: Puede crear una función personalizada en Oracle que recuperará la ruta del directorio a partir de un valor de cadena.

La siguiente función llamada get_dir_path extraerá la ruta del directorio. Funciona con rutas de archivo de sistema Windows y UNIX.

CREATE OR REPLACE FUNCTION get_dir_path
   (p_path IN VARCHAR2)
   RETURN varchar2

IS
   v_dir VARCHAR2(1500);

BEGIN

   -- Parse string for UNIX system
   IF INSTR(p_path,'/') > 0 THEN
      v_dir := SUBSTR(p_path,1,(INSTR(p_path,'/',-1,1)-1));

   -- Parse string for Windows system
   ELSIF INSTR(p_path,'') > 0 THEN
      v_dir := SUBSTR(p_path,1,(INSTR(p_path,'',-1,1)-1));

   -- If no slashes were found, return the original string
   ELSE
      v_dir := p_path;
   END IF;

   RETURN v_dir;

END;

Después de crear la función anterior, puede hacer referencia a la función en las instrucciones SQL. Por ejemplo,

SELECT get_dir_path('c:windowstempexample.xls')
FROM dual;

Esta instrucción SQL devolverá ‘c:windowstemp’.