ভেরিয়েবলের জন্য একটি এসকিউএল ক্যোয়ারীর আউটপুট বরাদ্দ করা


10

আমি ওরাকল ডাটাবেসের সাথে সংযোগ স্থাপন করছি এবং একটি ক্যোয়ারী ফায়ার করছি এবং আউটপুটটিকে ভেরিয়েবলের জন্য নির্ধারণ করছি কিন্তু আমি যখন ভেরিয়েবলটির মান প্রতিধ্বনি করি তখন এটি সঠিকভাবে মুদ্রিত হয় না।

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
আমি ফর্ম্যাটিংটি ঠিক করার পরে, এখনই আপনার মূল কোডটি ইন্ডেন্টিংয়ের সাথে মেলে কিনা তা দয়া করে পরীক্ষা করে দেখুন। (যদি মেলে, তবে এটি ভুল You আপনি এখানে-নথিগুলির 'ক্লোজিং ডিলিমিটারের মতো পছন্দ করতে পারবেন না))
মানটওয়ার্ক

সাধারণ মোডে কী দেখানো হয়, এবং নির্ধারিত হওয়ার সময় গণনার মান কত?
অট--

উত্তর:


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স্বরলিপি সহ ট্যাবগুলিও ব্যবহার করতে পারেন । স্পেস নয়, টিএবিএস!
slm

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শেষে একটি বাম দিকে ফ্লাশ করা দরকার, এর সামনে কোনও সাদা জায়গা নেই।
কুসালানন্দ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.