从Unix Korn Shell脚本中的Oracle SP Out Param SYS_REFCURSOR获取数据

时间:2017-04-07 08:28:33

标签: oracle shell unix sys-refcursor

我在oracle中有一个存储过程,其参数为sys ref_cursor。我需要从korn shell执行sp。阅读输出并将其用作电子邮件正文。但我找不到任何示例代码来读取unix中的sys ref游标。下面是我的代码。另外我怎么读curprint 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

1 个答案:

答案 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的来源,所以我现在已将其硬编码为数字。

我想你可能想要反馈,而不是偶然的。