Du har din print return_val
på fel plats; det ska finnas inuti SQL*PLUS-kommandot, före utgången, för att skriva ut ref-markörvariabeln.
Du måste också prefixet return_val
med ett kolon i ditt proceduranrop, för att indikera att den använder bindningsvariabeln du just deklarerade - även om du också utelämnade variabeltypen från dess deklaration. Det här verkar göra vad du vill:
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 inte visat var WEEKNUM
kommer från så jag har hårdkodat det till ett nummer för nu.
Jag tror att du förmodligen vill aktivera feedback, inte på, för övrigt.