2017-05-18 3 views
0

In einer gespeicherten Prozedur übergebe ich einen Tabellennamen als Eingabevariable. Ich möchte die Anzahl der Zeilen dieser Tabelle mit dieser gespeicherten Prozedur zurückgeben.Gespeicherte Prozedur, um die Anzahl der Datensätze aus dem Namen der Eingabetabelle zu ermitteln

habe ich versucht, so etwas wie dieses, aber es hat nicht funktioniert:

clear screen; 
set serveroutput on; 
declare tbl_nm varchar2(50); 
create or replace procedure table_cnt(table_name in varchar2(50), cnt out integer) as 
begin 
tbl_nm:=table_name; 
select count(*) into cnt from tbl_nm; 
end; 

in Oracle 11g arbeiten.

Antwort

0

Hier ist eine Funktion von AskTom ist, können Sie sich darauf beziehen

create or replace 
function get_rows(p_tname in varchar2) return number 
as 
l_columnValue number default NULL; 
begin 
execute immediate 
'select count(*) 
from ' || p_tname INTO l_columnValue; 

return l_columnValue; 
end; 
/

select user, table_name, 
get_rows(user||'.'||table_name) cnt 
from user_tables 
/
Verwandte Themen