如何在Sybase中列出所有用户表及其行数?

Nee*_*rav 8 sybase

我想返回所有表格及其旁边的计数.什么是最快捷的方式?

我知道在Oracle中,您可以执行类似下面的操作,但不确定Sybase:

declare n number;
begin
   for rec in (select object_name from user_objects where object_type='TABLE')
   loop
     execute immediate 'select count(*) from '||rec.object_name into n;
     dbms_output.put_line (rec.object_name||':'||n);
   end loop;
end;
Run Code Online (Sandbox Code Playgroud)

Nee*_*rav 20

这是执行上述操作的Sybase sql:

select ob.name,st.rowcnt 
from sysobjects ob, systabstats st 
where ob.type="U"  
and st.id=ob.id 
order by ob.name
Run Code Online (Sandbox Code Playgroud)

  • Sybase IQ对`table'systabstats'找不到`做出反应!! (5认同)
  • 添加group by子句来处理多个条目:从sysobjects ob中选择ob.name,sum(st.rowcnt),在ob.type ="U"中选择systabstats st,按ob.name顺序选择st.id = ob.id group .名称 (2认同)

maf*_*oft 10

这取决于您的Sybase产品是什么意思.在我的SQL Anywhere(9和11)中,您的解决方案不起作用,但这有效:

select table_name, count
from systable
where primary_root<>0 and creator=1
order by 1
Run Code Online (Sandbox Code Playgroud)