Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

nama tabel dinamis dalam pernyataan pilih

Anda dapat menggunakan kursor ref tetapi saya tidak akan merekomendasikannya. Ini seperti ini

create table tab_01 as select 1 a , 10 b from dual;
create table tab_02 as select 2 a , 20 b from dual;
create table tab_03 as select 3 a , 30 b from dual;

create or replace function get_all_history
return sys_refcursor
as
   r sys_refcursor;
   stmt varchar2(32000);
   cursor c_tables is
           select  table_name
           from    user_tables
           where   table_name like 'TAB_%';
begin
   for x in c_tables loop
           stmt := stmt || ' select * from ' || x.table_name ||' union all';
   end loop;
   stmt := substr(stmt , 1 , length(stmt) - length('union all'));
   open r for stmt;
   return r;
end;
/

SQL> select get_all_history() from dual;

GET_ALL_HISTORY()
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

         A          B
---------- ----------
         1         10
         2         20
         3         30


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. memperbarui kolom stempel waktu dengan stempel waktu yang berisi 'T'

  2. ORA-04091 - Bagaimana cara mengubah tabel yang memicu pemicu?

  3. Kesalahan menggunakan oracle.dataaccess.dll

  4. Kueri berparameter dinamis dengan suka

  5. buat sinonim ora-01031 hak istimewa yang tidak mencukupi