क्या मैं एक sql hana जगह धारक में एक sql क्वेरी रख सकता हूं

Dec 15 2020

क्या मैं sql hana प्लेस धारक में sql क्वेरी रख सकता हूं ?

निम्नलिखित क्वेरी काम करती है:

     Select * From table1
     ('PLACEHOLDER' = ('$$IP_ShipmentDate$$', '2020-01-01'))

मैं निम्नलिखित की तरह कुछ पारित करने की कोशिश कर रहा हूँ:

      Select * From table1
     ('PLACEHOLDER' = ('$$IP_ShipmentDate$$', 
       Select TO_VARCHAR(min("some_date"),'YYYY-MM-DD') from Table2)

वर्तमान में एक सिंटेक्स त्रुटि हो रही है

जवाब

1 astentx Dec 21 2020 at 16:33

जैसा कि त्रुटि आपको बताती है, स्तंभ दृश्य पैरामीटर के लिए अभिव्यक्तियाँ समर्थित नहीं हैं Can't use column expression as column view parameter:।

हालांकि, इसकी गणना करने के लिए विकल्प हैं:

  • यदि आपके पैरामीटर्स का मान शब्द इस परिकलित दृश्य से संबंधित है (उदाहरण के लिए आपको इस तर्क के लिए कुछ डिफ़ॉल्ट मान की आवश्यकता है जो कुछ तर्क के आधार पर गणना की जाती है), तो आप मान की गणना करने के लिए एक आउटपुट पैरामीटर के साथ एक संग्रहीत कार्यविधि बना सकते हैं, और पैरामीटर प्रकार का उपयोग कर सकते हैं प्रक्रिया / स्केलर समारोह से व्युत्पन्न । फ्रंटेंड से उस मूल्य को समायोज्य बनाने के लिए आप इसे इनपुट सक्षम के रूप में चिह्नित कर सकते हैं । या यदि परिकलित मान उपयोगकर्ता इनपुट पर आधारित है, तो आप प्रक्रिया के इनपुट पैरामीटर्स को पैरामीटर्स / वेरिएबल्स में परिकलन दृश्य के इनपुट पैरामीटर्स पर मैप कर सकते हैं -> इनपुट पैरामीटर्स के लिए प्रक्रिया / स्केलर फ़ंक्शन
create procedure sp_dummy (
  in dummy nvarchar(10) default '0',
  out val nvarchar(10)
)
as begin
  val = to_char(current_date, 'yyyymmdd');
end;

  • यदि आपके पैरामीटर्स का मान गणना दृश्य से संबंधित नहीं है और आप उस मान के लिए कुछ डेटा प्राप्त करने के लिए गणना दृश्य का उपयोग करते हैं, तो आप संग्रहीत कार्यविधि / SQLScript ब्लॉक के परिणाम सेट सुविधा का उपयोग कर सकते हैं । यदि आपका SQL निष्पादक SQL कथन को पार्स करने का प्रयास नहीं करता है (उदाहरण के लिए, SAP BO SELECTकुछ SP के बाद पहले SQL शब्द के रूप में जाँच करता है , तो यह तरीका इसके लिए मान्य नहीं होगा) और सिर्फ कॉलम परिभाषाओं के लिए मेटाडेटा के रूप में परिणाम सेट किया जाता है, फिर आप गणना तर्क को लपेटने के लिए अतिरिक्त ऑब्जेक्ट से बच सकते हैं।

परिणाम सेट वापस करने के लिए, एक सेलेक्ट स्टेटमेंट का उपयोग करें क्योंकि अनाम ब्लॉक में कोई भी पैरामीटर निर्धारित नहीं है।

do begin
  declare lv_param nvarchar(100);
  select max('some_date')
    into lv_param
  from dummy /*your_table*/;
  
  select *
  from "_SYS_BIC"."path.to.your.view/CV_TEST" (
    PLACEHOLDER."$$P_DUMMY$$" => :lv_param
  );
end;

उस गणना के आधार पर, RSPCLOGCHAINऊपर घोषित प्रक्रिया के आउटपुट द्वारा फ़िल्टर की गई तालिका के आधार पर मुझे देता है

LOG_ID                    | DATUM    | INPUT_PARAM | CUR_DATE
--------------------------+----------+-------------+----------
8FRV39X1O8814X6IJMLPI47PV | 20201221 | some_date   | 20201221
C7S9EY3J0GYA76Y2S9CIA39QR | 20201221 | some_date   | 20201221
35R8A3RFUG00EBY8MZQWJLIXF | 20201221 | some_date   | 20201221
850MVHOJIKIDD7EVY6WFIYPZN | 20201221 | some_date   | 20201221
1 LarsBr. Dec 16 2020 at 11:41

नहीं, यह समर्थित नहीं है।

पैरामीटर इंटरफ़ेस केवल वर्ण स्ट्रिंग के लिए है । चयन या भाव का मूल्यांकन HANA द्वारा नहीं किया जाएगा।

डायनामिक चयन पैरामीटर ( वर्तमान तिथि या तीन सप्ताह पहले ) को प्राप्त करने के लिए, आप संग्रहीत प्रक्रियाओं के माध्यम से या क्लाइंट (फ्रंट-एंड) टूल में वांछित मानों की गणना करके डिफ़ॉल्ट मानों को देखना चाहते हैं ।