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.