2017-05-18 10 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 
/
を参照することができます
関連する問題