Je hebt je print return_val
op de verkeerde plaats; het moet in het SQL*PLUS-commando staan, vóór het afsluiten, om de ref cursor-variabele af te drukken.
Je moet ook het voorvoegsel return_val
. geven met een dubbele punt in uw procedureaanroep, om aan te geven dat het de bindvariabele gebruikt die u zojuist hebt gedeclareerd - hoewel u het variabeletype ook uit de declaratie hebt weggelaten. Dit lijkt te doen wat je wilt:
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
}
Je hebt niet getoond waar WEEKNUM
komt vandaan, dus ik heb dat voorlopig gecodeerd in een nummer.
Ik denk dat je feedback waarschijnlijk uit wilt zetten, niet toevallig.