sql >> Database teknologi >  >> RDS >> Oracle

dynamisk tabelnavn i select-sætning

du kan bruge ref markøren, men jeg vil ikke anbefale det. det går sådan her

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. Rows_sent:12 Rows_examined:549024 - hvordan optimerer man mySQL-forespørgslen?

  2. OPRET og SLIP TABLESPACE Oracle

  3. Det er muligt at oprette en .jks fra en .crt- og .key-fil

  4. ADO.NET-udbyderen 'Oracle.ManagedDataAccess.Client' er enten ikke registreret i maskinens eller applikationens konfigurationsfil eller kunne ikke indlæses