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

indtastning af tabelnavn som plsql-parameter

Du kan bruge dynamisk SQL:

create or replace function get_table_count (table_name IN varchar2)
  return number
is
  table_count number;
begin
  execute immediate 'select count(*) from ' || table_name into table_count;
  dbms_output.put_line(table_count);
  return table_count;
end;

Der er også en indirekte måde at få antallet af rækker på (ved hjælp af systemvisninger):

create or replace function get_table_count (table_name IN varchar2)
  return number
is
  table_count number;
begin
  select num_rows
    into table_count
    from user_tables
   where table_name = table_name;

  return table_count;
end;

Den anden måde fungerer kun, hvis du havde samlet statistik på tabellen, før du aktiverede denne funktion.




  1. Er det muligt at have funktionsbaseret indeks i MySQL?

  2. Udbyderen er ikke kompatibel med versionen af ​​Oracle-klienten

  3. Hvordan EXTRACT() virker i MariaDB

  4. hvordan laver man en funktion for at returnere rækketype fra en tabel i pl/sql?