Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

SQL डेवलपर में बहु-मूल्यवान पैरामीटर के लिए बाइंड कैसे दर्ज करें

यह एक SQL डेवलपर प्रतिबंध नहीं है, यह बस बाध्य चर कैसे काम करता है। आप प्रभावी ढंग से कर रहे हैं:

select count(*) from foo 
where foo.id in ('1,2,3')

... जो वास्तव में in (to_number('1,2,3')) . है , इसलिए त्रुटि। यह एक ही मान के लिए काम करेगा, दो मानों के लिए विषम परिणाम देगा यदि आपका दशमलव विभाजक अल्पविराम है, और किसी और चीज़ के लिए विफल रहता है।

आप बाइंड प्रॉम्प्ट पर एकाधिक मान दर्ज नहीं कर सकते हैं, या in() . को एकाधिक मान प्रदान नहीं कर सकते हैं एक ही बंधन के साथ। आप <स्ट्राइक>धोखा कर सकते हैं हालांकि थोड़ा आविष्कारशील बनें। xmltable फ़ंक्शन अल्पविराम से अलग की गई स्ट्रिंग को पंक्तियों में बदल देगा जिसमें प्रत्येक में एक मान होगा:

var ids varchar2(50);
exec :ids := '1,2,3';
select * from xmltable(:ids);

COLUMN_VALUE
------------
1            
2            
3            

फिर आप इसे लुक-अप तालिका के रूप में उपयोग कर सकते हैं:

select count(*)
from xmltable(:ids) x
join foo f on f.id = to_number(x.column_value);

  COUNT(*)
----------
         3 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में Dapper QueryMultiple का उपयोग करना

  2. कोई और एसपीयू

  3. कर्सर:पिन एस X पर प्रतीक्षा करें

  4. एक कथन में अनुक्रम से कई NEXTVAL क्वेरी करें

  5. पीएल/एसक्यूएल के साथ कॉलम के माध्यम से कैसे लूप करें