Имате своя print return_val
на грешното място; трябва да е вътре в командата SQL*PLUS, преди изхода, за да отпечата променливата на ref курсора.
Трябва също да поставите префикс return_val
с двоеточие във вашето извикване на процедура, за да посочите, че използва свързващата променлива, която току-що сте декларирали - въпреки че сте пропуснали и типа на променливата от нейната декларация. Това изглежда прави това, което искате:
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
}
Не сте показали къде WEEKNUM
идва от, така че засега съм го кодирал твърдо до число.
Мисля, че вероятно искате да изключите обратната връзка, а не да я включите случайно.