2017-05-18 34 views
0

在存储过程中,我传递一个表名作为输入变量。我想用该存储过程返回此表的行数。存储过程从输入表名中找到记录数

我想是这样的,但它没有工作:

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; 

在Oracle 11g中工作。

回答

0

这里是AskTOM一个功能,你可以参考它

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 
/
相关问题