【问题标题】:Fetch data from Oracle SP Out Param SYS_REFCURSOR in Unix Korn Shell Script从 Unix Korn Shell 脚本中的 Oracle SP Out 参数 SYS_REFCURSOR 获取数据
【发布时间】:2017-09-02 13:17:59
【问题描述】:

我在 oracle 中有一个存储过程,其中 out 参数为 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

【问题讨论】:

    标签: oracle shell unix sys-refcursor


    【解决方案1】:

    你的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 的来源,所以我暂时将其硬编码为一个数字。

    我想你可能想顺便关闭而不是打开反馈。

    【讨论】:

    • 谢谢。您还可以告诉如何将值打印到控制台吗?像打印“文本”。 print cur 似乎不起作用
    • 你的意思是从 ksh 上下文 - 比如 printf "%s\n" $cur ?
    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    相关资源
    最近更新 更多