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

NUMBER कॉलम के लिए IN क्लॉज के अंदर अल्पविराम से अलग किए गए मानों का उपयोग करना

क्या आपको वास्तव में अल्पविराम से अलग की गई सूची वापस करने की आवश्यकता है? संग्रह प्रकार घोषित करना आम तौर पर बेहतर होगा

CREATE TYPE num_table
    AS TABLE OF NUMBER;

एक फ़ंक्शन घोषित करें जो इस संग्रह का एक उदाहरण देता है

CREATE OR REPLACE FUNCTION get_nums
  RETURN num_table
IS
  l_nums num_table := num_table();
BEGIN
  for i in 1 .. 10
  loop
    l_nums.extend;
    l_nums(i) := i*2;
  end loop;
END;

और फिर उस संग्रह का उपयोग अपनी क्वेरी में करें

SELECT *
  FROM users_table
 WHERE user_id IN (SELECT * FROM TABLE( l_nums ));

डायनेमिक SQL का भी उपयोग करना संभव है (जो @Sebas प्रदर्शित करता है)। हालाँकि, इसका नकारात्मक पक्ष यह है कि प्रक्रिया के लिए प्रत्येक कॉल एक नया SQL कथन उत्पन्न करेगा जिसे निष्पादित करने से पहले फिर से पार्स करने की आवश्यकता होती है। यह लाइब्रेरी कैश पर भी दबाव डालता है जो Oracle को कई अन्य पुन:प्रयोज्य SQL कथनों को शुद्ध करने का कारण बन सकता है जो कई अन्य प्रदर्शन समस्याएं पैदा कर सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरैकल में चुनिंदा क्वेरी के लिए डिफ़ॉल्ट पंक्ति क्रम

  2. मैं क्लाइंट के NLS_LANG की जांच कैसे करूं?

  3. Oracle एकाधिक तालिकाओं से चयन के माध्यम से सम्मिलित करें जहाँ एक तालिका में पंक्ति नहीं हो सकती है

  4. JDBC ResultSet को टेबल एलियास के साथ कॉलम मिलते हैं

  5. कैसे जांचें कि फ़ाइल पीएल/एसक्यूएल का उपयोग कर छवि है या नहीं?