我在oracle中有一个存储过程,其参数为sys ref_cursor。我需要从korn shell执行sp。阅读输出并将其用作电子邮件正文。但我找不到任何示例代码来读取unix中的sys ref游标。下面是我的代码。另外我怎么读cur
? print cur
似乎没有打印任何输出。
#!/usr/bin/ksh
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 ;
exec myproc_retcur(WEEKNUM ,return_val);
EXIT;
EOF`
print return_val
return cur
}
#---Start-----
runproc cur
sendmail "Weekly load test results", cur
答案 0 :(得分:1)
你的print return_val
在错误的地方;在退出之前,它应该在SQL * PLUS命令内,打印出ref cursor变量。
您还需要在过程调用中使用冒号前缀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
的来源,所以我现在已将其硬编码为数字。
我想你可能想要反馈,而不是偶然的。