Oracle
 sql >> база данни >  >> RDS >> Oracle

име на динамична таблица в оператора за избор

можете да използвате референтен курсор, но не бих го препоръчал. Става така

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. Извикване на съхранена функция (която връща масив от дефиниран от потребителя тип) в oracle през връзка към база данни

  2. Хибернация на Oracle ORA-01461 CLOB

  3. как да направя пул на връзки в java?

  4. Oracle SQL:Използване на функция CHR() с || съединявам

  5. Как да въведете символ за нов ред в Oracle?