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

ऑरैकल संग्रहीत कार्यविधि में WHERE क्लॉज को अल्पविराम सीमांकित मानों में भेजना

आदर्श रूप से, अल्पविराम से अलग किए गए मानों से बनी एक स्ट्रिंग में गुजरने के बजाय, आप एक संग्रह में पास होंगे। अगर आपके पास ऐसा कुछ है

CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);

तो आप उस संग्रह को अपनी प्रक्रिया में पास कर सकते हैं और इसे WHERE . में उपयोग कर सकते हैं खंड

CREATE OR REPLACE PROCEDURE procedure_name( p_values IN value_tbl )
AS
  ...
BEGIN
  FOR i IN (SELECT *
              FROM table_name
             WHERE column_name IN (SELECT *
                                     FROM TABLE( p_values )))
  LOOP
    ...
  END LOOP;
END;

यदि आपको वास्तव में अल्पविराम से अलग की गई स्ट्रिंग में पास करने की आवश्यकता है, तो आप उसी संग्रह प्रकार को परिभाषित कर सकते हैं और फिर स्ट्रिंग को पार्स कर संग्रह को पॉप्युलेट करने के लिए टॉम काइट का str2tbl समारोह . लेकिन यह शुरू करने के लिए एक संग्रह में पास करने से कम कुशल होने वाला है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा कोड में ORA-01795 कैसे हल करें?

  2. ओरेकल अपवादों को संभालें

  3. विंडोज 64 बिट के लिए Oracle 11g एक्सप्रेस संस्करण?

  4. ओरेकल व्यू पर प्राथमिक कुंजी कैसे जोड़ें?

  5. वृत्ताकार विदेशी कुंजियों वाली दो तालिकाओं से हटाएं