用于从输入表名称

时间:2017-05-18 12:14:55

标签: procedure

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

我尝试了类似的东西,但它不起作用:

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工作。

1 个答案:

答案 0 :(得分: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 
/