Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Calling all the SQL Guru's
Try this:
create or replace
function my_count (i_tabname in user_tables.table_name%type) return number is
type t is ref cursor; r t; l_retval number; begin open r for 'select count (*) from "' || i_tabname || '"'; fetch r into l_retval; close r; return l_retval; exception when others then if r%isopen then close r; end if; -- r%isopen then raise;
select table_name, my_count (table_name)
from user_tables
order by 1;
I tested it on NT 4.0, Oracle 8.1.6.3.1
Martin
Mick Rice wrote:
>
> I was trying to devise a single piece of sql to generate a list of all
> the tables in the database and a count of the number of rows on each
> table. I started out confident that I could code this easily using a
> subquery and 'group by' statement. However an hour later, and
> confidence diminished, I havn't been able to get the syntax right. The
> best I could come up with was the pretty lame looking query following
> which wasn't what I was aiming for at all.
>
> set pagesize 0;
> spool count.sql;
> select 'select count(*) from '||owner||'.'|| table_name||';' from
> all_tables;
> spool off;
>
> Can anyone come up with a single statement which does this ?
>
> It's put me out of my misery,
>
> Thanks,
>
> Mick.
>
> --
> Back it up !
>
> Sent via Deja.com
> http://www.deja.com/
Received on Thu Mar 08 2001 - 11:43:01 CST
![]() |
![]() |