Hola Cloayza,
muchas gracias por su rápida y trabajada respuesta.
Le comento, llegué a una solución en la que no fui consciente de ella hasta que la probé.
El procedimiento del que he hablado antes basicamente lo que hace es ejecutar una consultar y alimentar la estructura que luego paso por parámetro.
Cambié el tipo del parámetro de salida (p_permiso), de tipo TPermisos por SYS_REFCURSOR, de manera que la función abría una consulta donde volcaba el contenido en dicho parámetro:
Código SQL
[-]
OPEN p_Permiso FOR
SELECT ...
FROM ...
WHERE ...
ORDER BY ...;
Desde Delphi al llamar al procedimiento con el componente TOraStoredProc funcionó sin problemas, hice una lectura de cada una de los registros y alimente una estructura Type Record en Delphi. Fue un momento agridulce porque me di cuenta de la tontería que estaba haciendo en ese momento. Me di cuenta que para eso, la consulta que ejecutaba en el procedimiento del paquete almacenado podía ejecutarla desde Delphi y alimentar la estructura Type Record definida en Delphi.
Me parece más óptimo y más "limpio" llamar al procedimiento y que me devuelva lo que quiero, ya que no hay lógica de negocio, es obtener una foto de lo que hay en BBDD en un momento dado, y la idea es que a este paquete se acceda desde distintas aplicaciones, ya que van a limitar el acceso a los expedientes.
La solución que me ofreces es correcta y la que me imagino que al final usaré. Crearé una Unit de Delphi con las funciones que he definido en el paquete, y con la estructura Type Record creada en la misma Unit, añadiré la directiva {$WEAKPACKAGEUNIT ON} para poderla usar en todas las aplicaciones.
Investigaré un poco más a ver si consigo dar con otra solución. Si la encuentro la comentaré.
Muchas gracias por su ayuda Cloayza.
Saludos
.