Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Holen Sie Daten aus Oracle SP Out Param SYS_REFCURSOR in Unix Korn Shell Script

Sie haben Ihren print return_val am falschen Ort; es sollte innerhalb des SQL*PLUS-Befehls vor dem Beenden stehen, um die ref-Cursor-Variable auszugeben.

Sie müssen auch return_val voranstellen mit einem Doppelpunkt in Ihrem Prozeduraufruf, um anzuzeigen, dass die soeben deklarierte Bind-Variable verwendet wird - obwohl Sie auch den Variablentyp aus der Deklaration weggelassen haben. Dies scheint zu tun, was Sie wollen:

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
}

Sie haben nicht gezeigt, wo WEEKNUM kommt von, also habe ich das vorerst in eine Zahl festcodiert.

Ich denke, Sie möchten übrigens Feedback wahrscheinlich deaktivieren, nicht aktivieren.