2017-04-07 2 views
0

私は、outパラメータにsys ref_cursorというストアドプロシージャを使用しています。私はkornシェルからspを実行する必要があります。出力を読んで、電子メール本文として使用してください。しかし、私はUNIXでsys refカーソルを読むためのサンプルコードを見つけることができませんでした。以下は私のコードです。また、どうすればcurを読むことができますか? print curは出力を印刷していないようです。Oracle SPからデータをフェッチするUnix KornシェルスクリプトのParam SYS_REFCURSOR

#!/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は間違った場所にあります。 exitの前に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今の数になるように、私はハードコーディングされてきたどこから来ているあなたは示していません。

私は偶然、フィードバックをオフにしたいと思います。

+0

ありがとうございます。また、値をコンソールに出力する方法も教えてください。印刷 "テキスト"のように。 print cur doesntがうまくいくようです。 – kten

+0

あなたはkshコンテキストから 'printf"%s \ n "$ cur'のような意味ですか? –

関連する問題