Máte svůj print return_val
na špatném místě; měl by být uvnitř příkazu SQL*PLUS před ukončením, aby se vytiskla proměnná ref kurzoru.
Musíte také zadat předponu return_val
s dvojtečkou ve vašem volání procedury, abyste označili, že používá proměnnou vazby, kterou jste právě deklarovali - ačkoli jste z její deklarace také vynechali typ proměnné. Zdá se, že toto dělá, co chcete:
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
}
Neukázali jste místo WEEKNUM
pochází z, takže jsem to prozatím napevno zakódoval na číslo.
Myslím, že pravděpodobně chcete odezvu vypnout, nikoli zapnout, mimochodem.