在Oracle下如何获得当前模式下每一个表的记录合

fwtandpj 2003-08-26 08:29:06
方法如下:
declare
n_reccount number;
begin
for var in (select table_name from user_tables) loop
--先获得所有表的名字
--需要一个动态的sql语句
select count(*) into n_reccount from var.table_name
但不知道如何组织这个sql语句
dbms_output.put_line('Table_Name '||var.table_name
'Record_Count '||n_reccount);
end loop;
end;
...全文
23 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-08-26
  • 打赏
  • 举报
回复
declare
n_reccount number;
nSQL NUMBER;
sqlcmd VARCHAR2(2048);
my_count NUMBER;
ret NUMBER;
begin
nSQL := DBMS_SQL.OPEN_CURSOR;
for var in (select table_name from user_tables) loop
sqlcmd := 'SELECT COUNT(*) FROM :TBNAME';
DBMS_SQL.PARSE( nSQL, sqlcmd, DBMS_SQL.v7 ) ;
DBMS_SQL.BIND_VARIABLE( nSQL, ':TBNAME', var.table_name ) ;
DBMS_SQL.DEFINE_COLUMN( nSQL, 1, my_count ) ;
ret := DBMS_SQL.EXECUTE( nSQL ) ;
LOOP
IF DBMS_SQL.FETCH_ROWS( nSQL ) = 0 THEN
EXIT;
END IF;
DBMS_SQL.COLUMN_VALUE( nSQL, 1, my_count ) ;
END LOOP;
dbms_output.put_line('Table_Name '||var.table_name
'Record_Count '||my_count);
end loop

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧