चर के लिए SQL क्वेरी का आउटपुट असाइन करना


10

मैं oracle database से जुड़ रहा हूं और एक क्वेरी फायर कर रहा हूं और आउटपुट को वेरिएबल में असाइन कर रहा हूं लेकिन जब मैं वेरिएबल की वैल्यू इको करता हूं तो वह सही तरीके से प्रिंट नहीं होता है।

count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
           set pagesize 0 feedback off verify off heading off echo off;
           select max(cust_id) from cutomers
           exit;
           END`
           echo $count

डेटाबेस पर निकाल दिए जाने पर क्वेरी सही परिणाम। लेकिन "गणना" चर का गलत मूल्य है।


1
कृपया जांचें कि क्या मैंने फॉर्मेटिंग तय करने के बाद इंडेंटिंग आपके मूल कोड से मेल खाता है। (यदि मिलान होता है, तो यह गलत है। आप यहां दस्तावेजों को बंद करने वाले परिसीमन की तरह
संकेत

सामान्य मोड में क्या दिखाया गया है, और असाइन करते समय गणना का मूल्य क्या है?
ott--

जवाबों:


13

यहाँ-समाप्ति शब्द डॉक लाइन पर केवल वर्ण होना चाहिए: कोई इंडेंटिंग की अनुमति नहीं है। इसके अलावा, $()बैकटिक्स के बजाय उपयोग करें - वे नेस्टेबल हैं।

count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
       set pagesize 0 feedback off verify off heading off echo off;
       select max(cust_id) from cutomers
       exit;
END
)
echo $count

http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents


2
आप <<-ENDनोटेशन के साथ टैब का भी उपयोग कर सकते हैं । रिक्त स्थान नहीं, TABS!
स्लम

1
OUTPUT=$( ${OracleClientHome}/sqlplus -S user/pass@database <<EOF
set pagesize 0 linesize 32767 feedback off verify off heading off echo off
select a1.id  || '|' ||
       a1.stmt_begin_date  || '|' ||
       a1.stmt_end_date  || '|' ||
       a1.status  || '|' ||
       a1.total_recs 
from acct_stmt_file a1
 where a1.actp_cd = 'HSA'
   and a1.stmt_begin_date =trunc(sysdate);
exit;
EOF
)

echo -e "\n${OUTPUT}"

1
क्यों? मुझे लगता है कि यह बेहतर होगा कि आप अपने विचारों को समुदाय के साथ साझा करें, न केवल इस स्क्रिप्ट को स्निपेट के रूप में।
पेटेर - मोनिका

-1
count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
           set pagesize 0 feedback off verify off heading off echo off
           select max(cust_id) from cutomers;
           exit;
           END`

           echo $count

आपको अर्धविराम का उपयोग सही जगह पर करना होगा।


इसके अलावा, ENDअंत में बाईं ओर फ्लश करने की आवश्यकता है , इसके सामने कोई व्हाट्सएप नहीं है।
Kusalananda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.