2013-02-27 25 views
5

मेरे पास एक जेपीक्यूएल नामित क्वेरी है जो पैरामीटर के रूप में List लेती है। मैं एक IN वाक्यांश में पैरामीटर उपयोग कर रहा हूँ:क्या जेपीए में खाली सूची के लिए पास करना और परीक्षण करना संभव है?

...WHERE :list IS EMPTY OR x.id IN :list 

न तो होगा:

...WHERE x.id IN :list 

मैं जैसे निम्नलिखित लेकिन वाक्य रचना जाहिरा तौर पर मुझे नहीं कुछ करने के लिए करना चाहते हैं

...WHERE SIZE(:list) = 0 OR x.id IN :list 

क्या मैं जेपीए 2.0 नाम की क्वेरी में असंभव करने की कोशिश कर रहा हूं? मुझे पता है कि मापदंड एपीआई के माध्यम से या सादे पुराने जेपीक्यूएल तारों का उपयोग करके इसे कैसे किया जाए।

उत्तर

-2

जो आप क्वेरी में करने की कोशिश कर रहे हैं वह एक गैर समझ में आता है। आप पैरामीटर की स्थिति का उपयोग कर क्वेरी परिणामों को प्रतिबंधित करने का प्रयास कर रहे हैं। लेकिन आप इस पैरामीटर की तुलना अपने चयन में किसी भी चीज़ से नहीं करते हैं।

(यह कोई मतलब) इस क्वेरी के बारे में सोचो: दो अलग-अलग प्रश्नों के बीच चुनने से पहले सूची रिक्त है:

अगर :list नहीं है

SELECT * FROM SOMETABLE WHERE :list IS EMPTY 

तो मैं आप की जाँच करने के लिए यदि जरूरत है खाली: ...WHERE x.id IN :list

अगर :list खाली है: (NO WHERE CLAUSE AT ALL)

+0

आप बहुत सही निश्चित रूप से कर रहे हैं। मैं कोड में उस सशर्त कोड को स्वयं में ले जाने की उम्मीद कर रहा था, लेकिन यह जेपीक्यूएल बीएनएफ द्वारा समर्थित नहीं है। –

+2

मैं अपने कमजोर रक्षा में पेशकश करूंगा कि निम्न प्रकार के एसक्यूएल (जेपीक्यूएल नहीं) अक्सर उत्पन्न परिदृश्यों में देखा जाता है: 'जहां से 1 = 1;' से चुनें x (यानी जो भी 'WHERE' खंड को इकट्ठा कर रहा है कभी-कभी यह सुनिश्चित करता है कि '1 = 1' 'WHERE' खंड में है इसलिए गतिशील असेंबली को उस प्रकार के तर्क नहीं करना पड़ता है जब आप किस बारे में बात कर रहे हैं)। ऐसा कहकर, मुझे नहीं लगता कि मैं जेपीक्यूएल में इससे दूर हो सकता हूं। धन्यवाद। –

संबंधित मुद्दे

 संबंधित मुद्दे