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

एक संख्या चर घोषित कैसे करें जहां मैं अपने लूप में तालिका की संख्या को सहेज सकता हूं

आपके डायनेमिक SQL में तीन चीज़ें गलत हैं।

  1. EXECUTE IMMEDIATE कोई फ़ंक्शन नहीं है:उचित सिंटैक्स execute immediate '<<query>>' into <<variable>> में निष्पादित करें। ।
  2. एक INSERT स्टेटमेंट में VALUES क्लॉज या सेलेक्ट होता है लेकिन दोनों नहीं। इस मामले में चयन बहुत गलत होगा। यह भी ध्यान दें कि यह VALUES है, VALUE नहीं है।
  3. COLUMN_NAME डायनेमिक SQL में एक स्ट्रिंग अक्षर है, इसलिए इसे उद्धरणों में होना चाहिए। लेकिन चूंकि SQL कथन स्वयं एक स्ट्रिंग है, इसलिए डायनेमिक स्ट्रिंग्स में उद्धरणों से बचने की आवश्यकता है, इसलिए यह `'''||column_name||''' होना चाहिए।

तो संशोधित संस्करण कुछ इस तरह दिखेगा

declare
  Cursor C_TABLE  is 
    select trim(table_name) as table_name
      from all_tables
     where table_name in ('T1', 'T2', 'T3');

  V_ROWNUM number;

begin
    for m in C_TABLE
      loop 
          for i in ( select column_name 
                      from (
                          select c.column_name
                             from all_tab_columns c
                            where c.table_name = m.table_name 
                              and c.owner = 'owner1' 
                            )  
                    )       
     loop
         execute immediate 'select count(*) from ' || m.table_name into  V_ROWNUM;
         execute immediate 'insert into MY_table values ( ''' || i.column_name || ''', ' || V_ROWNUM || ')';

        end loop;
    end loop;
end;
/

डायनेमिक SQL कठिन है क्योंकि यह संकलन त्रुटियों को रनटाइम त्रुटियों में बदल देता है। पहले स्टेटमेंट को स्टेटिक SQL के रूप में लिखना अच्छा अभ्यास है। एक बार जब आपको मूल सिंटैक्स सही मिल जाए तो आप इसे डायनेमिक 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. पासवर्ड में @ साइन के साथ Oracle कनेक्शन स्ट्रिंग

  3. एसक्यूएल क्वेरी यह जांचने के लिए कि कॉलम 1 के सबस्ट्रिंग में दूसरे कॉलम का मान है या नहीं

  4. ORA-01858 देखकर:एक गैर-संख्यात्मक वर्ण पाया गया जहां एक संख्यात्मक अपेक्षित था

  5. उप क्वेरी परिणाम से मूल्य का चयन कैसे करें