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

PLSQL गतिशील क्वेरी

डायनेमिक SQL आपके PL/SQL वेरिएबल को नहीं देख सकता है:आपको इसे एक स्ट्रिंग पास करने की आवश्यकता है जिसे SQL इंजन के दायरे में निष्पादित किया जा सकता है। इसलिए आपको टेबल के नाम को स्टेटमेंट के बॉयलरप्लेट टेक्स्ट के साथ जोड़ना होगा:

query1 := 'SELECT max(c)  FROM ' || variable_name;

आपको क्वेरी के परिणाम को एक वेरिएबल में वापस करने की भी आवश्यकता है।

यहां बताया गया है कि यह कैसे काम करता है (मैंने आपके उदाहरण से कुछ अनावश्यक कोड निकाल दिए हैं):

DECLARE    
 c_table VARCHAR2(40);
 c_obj VARCHAR2(20);
BEGIN
   for lrec in ( select a as tab_name from A )
   LOOP
      EXECUTE IMMEDIATE 'SELECT max(object_ref)  FROM ' || lrec.tab_name 
           into c_obj ;
      dbms_output.put_line('Maximum value: '|| lrec.tab_name
           || '='|| c_obj);
   END LOOP;
END;


  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 पंक्तियों को कॉलम में बदलें

  2. कुंजी द्वारा दिनांक सीमा के लिए पंक्तियाँ कैसे उत्पन्न करें

  3. तालिका या दृश्य मौजूद नहीं है

  4. Oracle 11g प्रतिकृति - दूरस्थ डेटाबेस (डेटाबेस लिंक) के साथ रिफ्रेश ऑन रिफ्रेश का उपयोग करना

  5. C# Oracle प्रबंधित कनेक्शन पर Kerberos