Du har din print return_val
på det forkerte sted; det skal være inde i SQL*PLUS-kommandoen, før exit, for at udskrive ref-markørvariablen.
Du skal også sætte præfikset return_val
med et kolon i dit procedurekald for at indikere, at det bruger den bind-variabel, du lige har erklæret - selvom du også har udeladt variabeltypen fra dens erklæring. Dette ser ud til at gøre, hvad du vil:
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
}
Du har ikke vist hvor WEEKNUM
kommer fra, så jeg har hårdkodet det til et tal indtil videre.
Jeg tror nok, du vil slå feedback fra, ikke til i øvrigt.