sql >> Base de Datos >  >> RDS >> Oracle

Obtener datos de Oracle SP Out Param SYS_REFCURSOR en Unix Korn Shell Script

Tienes tu print return_val en el lugar equivocado; debe estar dentro del comando SQL*PLUS, antes de salir, para imprimir la variable de cursor ref.

También necesita el prefijo return_val con dos puntos en su llamada de procedimiento, para indicar que está usando la variable de vinculación que acaba de declarar, aunque también omitió el tipo de variable de su declaración. Esto parece hacer lo que quieres:

function runproc
{
    #read ref cursor from proc
    cur=`sqlplus -s $connectiondetails <<EOF
        SET PAGESIZE 0 FEEDBACK ON VERIFY OFF HEADING OFF ECHO OFF
        var return_val refcursor
        exec myproc_retcur(14, :return_val);
        print return_val
        EXIT
        EOF`
    return cur
}

No has mostrado dónde WEEKNUM proviene, así que lo codifiqué a un número por ahora.

Creo que probablemente quieras desactivar la retroalimentación, no activarla, por cierto.