Bạn có print return_val
của mình không đúng chỗ; Nó phải ở bên trong lệnh SQL * PLUS, trước khi thoát, để in ra biến con trỏ ref.
Bạn cũng cần thêm tiền tố return_val
với dấu hai chấm trong lệnh gọi thủ tục của bạn, để cho biết nó đang sử dụng biến liên kết mà bạn vừa khai báo - mặc dù bạn cũng đã bỏ qua kiểu biến khỏi khai báo của nó. Điều này dường như làm những gì bạn muốn:
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
}
Bạn chưa hiển thị WEEKNUM
ở đâu bắt nguồn từ đó, vì vậy tôi đã cố gắng mã hóa nó thành một số ngay bây giờ.
Tôi nghĩ rằng bạn có thể muốn vô tình tắt phản hồi chứ không phải bật.