在存储过程中,我传递一个表名作为输入变量。我想用该存储过程返回此表的行数。
我尝试了类似的东西,但它不起作用:
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 :(得分: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
/