2015-07-01 98 views
1

我有一個直接從數據庫中選擇計數的ksh腳本。我用存儲過程調用了這個函數。我的存儲過程選擇一個OUT變量。在Unix腳本中使用存儲過程OUT參數

如何在我的腳本中聲明的OUT值存入我的數據文件?

bteq <<EOF 
.RUN FILE $DBENV/1logon.txt 
.export data file=$PMRootDir/$FOLDER_NME/SessLogs/pdbasis_count.txt 
.set recordmode OFF; 
.set sidetitles OFF; 
.set titledashes off; 

#This Select Statement is being replaced by the Stored Procedure Call 
SELECT trim(COUNT(*)) 
FROM [Removed] 
WHERE [Removed] 

.IF ERRORCODE <> 0 THEN .QUIT 11; 

.export reset; 
.logoff; 
.quit 

EOF

回答

1

你可以試試這個。 lv_status應該給你out參數。

  ##Procedure Execution starts 

     procname=$your_user_name."your_proc_name" 
     echo $procname 
     echo $procname |grep "(" 
     if [ $? -eq 0 ] 
     then 
      procname=`echo $procname|cut -f1 -d")"`",lv_status)"; 
     else 
      procname=`echo $procname`"(lv_status)"; 
     fi 
     echo "Executing $procname" 

     bteq <<EOF 
     .logon $tdpid/db_user_name,db_password 
     .EXPORT FILE=$tempfile 
     .SET WIDTH 3000 
     .SET TITLEDASHES OFF; 
     CALL $procname; 
     .EXPORT RESET; 
     .LOGOFF 
     .EXIT 
     EOF 

     exit_status=$? 
     lv_status=`tail +2 $tempfile` 

     rm -f $tempfile 

     if [ $lv_status ] 
     then 
      if [ $lv_status = "FAILED" -o $exit_status -ne 0 ] 
      then 
       echo "Error in executing procedure $procname"; 
       exit 1; 
      fi 
     else 
      echo "The procedure does not have the mandatory OUT status parameter. Consider remodeling the code for full error trapping" 
      exit 1 
     fi 

     echo "Procedure $procname completed successfully" 
+0

隨着一些調整,以適應我的需求,它的工作原理。謝謝! – staples

+0

是的,我剛剛提供了一份草稿。高興地幫助.. :) @斯塔普斯 –

相關問題