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

संपूर्ण क्वेरी निष्पादित किए बिना गतिशील क्वेरी में उपयोग किए गए कॉलम को कैसे खोजें

कॉलम नाम प्राप्त करने के लिए आपको क्वेरी निष्पादित करने की आवश्यकता नहीं है, आपको बस इसे पार्स करने की आवश्यकता है; जैसे एक साधारण उदाहरण के रूप में:

set serveroutput on

declare
  l_statement varchar2(4000) := 'select * from employees';
  l_c pls_integer;
  l_col_cnt pls_integer;
  l_desc_t dbms_sql.desc_tab;
begin
  l_c := dbms_sql.open_cursor;
  dbms_sql.parse(c=>l_c, statement=>l_statement, language_flag=>dbms_sql.native);
  dbms_sql.describe_columns(c=>l_c, col_cnt=>l_col_cnt, desc_t=>l_desc_t);

  for i in 1..l_col_cnt loop
    dbms_output.put_line(l_desc_t(i).col_name);
  end loop;

  dbms_sql.close_cursor(l_c);
exception
  when others then
    if (dbms_sql.is_open(l_c)) then
      dbms_sql.close_cursor(l_c);
    end if;
    raise;
end;
/

जो आउटपुट करता है:

EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID

PL/SQL procedure successfully completed.

आप लूप के अंदर कॉलम नामों पर जो भी सत्यापन चाहते हैं वह कर सकते हैं।

ध्यान रखें कि आपको कॉलम एक्सप्रेशन के लिए केवल कॉलम नाम या उपनाम दिखाई देंगे (और मान्य होंगे), जो आवश्यक रूप से उस डेटा को प्रतिबिंबित नहीं करेगा जो वास्तव में पुनर्प्राप्त किया जा रहा है। कोई व्यक्ति ऐसी क्वेरी तैयार कर सकता है जो किसी भी डेटा को कहीं से भी खींचती है जिसके पास इसे एक्सेस करने की अनुमति है, लेकिन फिर कॉलम/एक्सप्रेशन उपनाम देता है जिसे मान्य माना जाता है।

यदि आप विशिष्ट डेटा तक पहुंच को प्रतिबंधित करने का प्रयास कर रहे हैं तो अन्य तंत्र जैसे दृश्य, आभासी निजी डेटाबेस, आदि देखें।



  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-01438:निर्दिष्ट परिशुद्धता से बड़ा मान इस कॉलम के लिए अनुमति देता है - मैं यह कैसे प्राप्त करूं कि यह किस कॉलम का जिक्र कर रहा है?

  2. ओआरए -00979:जब मैं अपना एसक्यूएल निष्पादित करता हूं तो अभिव्यक्ति द्वारा समूह नहीं होता है

  3. Oracle में किसी तिथि से महीने का नाम कैसे प्राप्त करें?

  4. डेटाबेस बनाम टेबलस्पेस, क्या अंतर है?

  5. सामान्य त्रुटि:1008 OCIStmtExecute:ORA-01008:सभी चर बाध्य नहीं हैं