2017-04-07 60 views
0

我在oracle中有一個存儲過程,出參數爲sys ref_cursor。我需要從korn shell執行sp。讀取輸出並將其用作電子郵件正文。但我找不到任何示例代碼來讀取unix中的sys ref cursor。下面是我的代碼。另外我怎樣才能讀curprint cur似乎不打印任何輸出。在Unix下從Oracle SP Out Param SYS_REFCURSOR獲取數據Korn Shell腳本

#!/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

你有你的print return_val在錯誤的地方;它應該在退出之前在SQL * PLUS命令內部打印出引用遊標變量。

您還需要在過程調用中用冒號加上前綴return_val,以指示它使用剛剛聲明的綁定變量 - 儘管您也從其聲明中省略了變量類型。這似乎做你想要的:其中WEEKNUM是來自您還沒有表現出

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 
} 

所以我硬編碼,爲許多現在。

我想你可能想要反饋關閉,而不是偶然。

+0

謝謝。你也可以告訴如何將值打印到控制檯?像打印「文本」。打印曲線似乎不起作用 – kten

+0

你是指從ksh上下文 - 像'printf'%s \ n「$ cur'? –