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

plsql में तत्काल निष्पादित करें

अगर आप वास्तव में select * from . की जरूरत है गतिशील तालिका का नाम , तो मैं शायद dbms_sql . के साथ जाऊंगा

रिकॉर्ड के लिए टाइप करें :

create type tq84_varchar2_tab as table of varchar2(4000);
/

परिणाम सेट . के लिए टाइप करें (जो रिकॉर्ड्स . की एक सरणी है ):

create type tq84_varchar2_tab_tab as table of tq84_varchar2_tab;
/

वह फ़ंक्शन जो परिणाम सेट . का चयन करता है और एक उदाहरण देता है :

create or replace function tq84_select_star_from_table(table_name in varchar2) 
    return tq84_varchar2_tab_tab
as
    stmt_txt     varchar2(4000);
    cur          number;
    columns_desc dbms_sql.desc_tab;
    column_cnt   number;

    result_set   tq84_varchar2_tab_tab;

begin

    stmt_txt := 'select * from ' || table_name;    

    cur := dbms_sql.open_cursor;

    dbms_sql.parse(cur, stmt_txt, dbms_sql.native);
    dbms_sql.describe_columns(cur, column_cnt, columns_desc);
    dbms_sql.close_cursor(cur);


    stmt_txt := 'select tq84_varchar2_tab(';

    for i in 1 .. column_cnt loop 

        if i != 1 then
           stmt_txt := stmt_txt || ',';
        end if;

        stmt_txt := stmt_txt || columns_desc(i).col_name;

    end loop;

    stmt_txt := stmt_txt || ') from ' || table_name;

--  dbms_output.put_line(stmt_txt);

    execute immediate stmt_txt 
    bulk collect into result_set;

    return result_set;


end tq84_select_star_from_table;

तब फ़ंक्शन का उपयोग कुछ इस तरह से किया जा सकता है:

declare
  records   tq84_varchar2_tab_tab;
begin

  records := tq84_select_star_from_table('user_objects');

  for i in 1 .. records.count loop
      dbms_output.put_line (records(i)(5) || ': ' || records(i)(1));
  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 SQL डेवलपर के साथ SYS के रूप में डेटाबेस में लॉग इन करने में असमर्थ

  2. एक प्रकार पर बाधा की जाँच करें

  3. Oracle डेटाबेस पर स्ट्रिंग कॉलम के लिए लगातार-समय सूचकांक

  4. तालिका में प्रत्येक आईडी के लिए अधिकतम लगातार वर्ष खोजें (ओरेकल एसक्यूएल)

  5. उचित उपकरण ट्यूनिंग को तेजी से काम करते हैं