यह मानते हुए कि आप ओरेकल डीबी पर हैं (अन्य सिस्टम अलग तरह से व्यवहार कर सकते हैं) आपको पता होना चाहिए कि एक बाइंड वैरिएबल (जेडीबीसी भाषण में:प्रश्न चिह्न) एक स्केलर वैल्यू को प्रतिस्थापित कर सकता है। केवल, उदा. एक स्ट्रिंग या एक संख्या।
लेकिन आप सूची . जैसा कुछ चाहते हैं इनपुट के रूप में संख्याओं की संख्या। इस प्रकार एक बाइंड वेरिएबल इस मामले में आपकी मदद नहीं करेगा।
आप जो चाहते हैं उसे हासिल करने का शायद सबसे आसान तरीका यह है:
अपनी क्वेरी में लिखें:
WHERE column_name in (1) -- $REPLACE_THIS$
ध्यान दें कि मैं एक मार्कर के रूप में क्वेरी में एक टिप्पणी का उपयोग कर रहा हूं। फिर, क्वेरी के beforeOpen
में ईवेंट, क्वेरी टेक्स्ट को इस तरह संशोधित करें:
// construct a comma-separated string representation of your list
// based on your report parameter (exercise left to the reader)
// var replacement = my_to_sql_csv(params["my_report_parameter"].value);
// for demonstration use:
var replacement = "1,2";
// modify the `IN` expression inside the SQL
this.queryText = this.queryText.replaceAll("(1) -- $REPLACE_THIS$", "(" + replacement + ")";
बस।