use sybsystemprocs go if exists ( select * from sysobjects where name = 'sp_tabrowcount' ) drop proc sp_tabrowcount go /* Inicio instalación para ASE 12.5.x */ print "Instalando el procedimiento sp_tabrowcount (ASE 12.5.x)" go /*************************************************************************/ /* sp_tabrowcount -- Lista las tablas de usuario con su número de filas. */ /* */ /* Uso: */ /* sp_tabrowcount , , '', '' */ /* */ /* Donde: */ /* - Muestra solo tablas. */ /* - Muestra solo tablas con filas. */ /* '' - Muestra el numero de filas solo para esta tabla. */ /* '' - Opciones válidas: 'desc', 'asc' or 'help'. */ /* 'desc' - Orden descendente. */ /* 'asc' - Orden ascendente. */ /* 'help' - Muestra la ayuda. */ /* Todos los parámetros son opcionales. */ /* */ /* Versiones de ASE soportadas: 15.0 en adelante. */ /* Autor: Juan Carlos Avila -- javila@sybasease.info */ /* Historia: */ /* 0.1 -- 05/07/2007 -- Version inicial (para ASE 12.5.x). */ /* 0.1.1 -- 05/08/2007 -- Agrega el parámetro @rowcount */ /* 0.1.2 -- 05/09/2007 -- Agrega la columna creation_date */ /* */ /* Legal: */ /* Antes de instalar y usar este software, por favor lea detenidamente */ /* el aviso sobre aspectos legales en http://www.sybasease.info/legal */ /*************************************************************************/ create procedure sp_tabrowcount @top int = NULL, @rowcount numeric(15,0) = NULL, @tablename varchar(30) = NULL, @opt varchar(4) = NULL as begin if @@trancount = 0 begin set chained off end set transaction isolation level 1 set nocount on declare @ret_status int select @ret_status = 0 if @opt is null select @opt = 'desc' if lower(@opt) not in ( 'desc', 'asc', 'help' ) begin print "'%1!' is not a valid display option.", @opt select @ret_status = -1 goto Usage end if lower(@opt) = 'help' goto Usage declare @name varchar(30), @rows numeric(15,0), @sql varchar(255), @crdate datetime if @top is null select @top = 0 set rowcount @top declare t_crsr cursor for select name, crdate from sysobjects where type='U' for read only create table #_tabrowcnt( table_name varchar(30), row_count numeric(15,0), creation_date varchar(15) ) open t_crsr fetch t_crsr into @name, @crdate while @@sqlstatus = 0 begin select @rows= rowcnt( doampg ) from sysindexes where indid < 2 and id = object_id ( @name ) insert into #_tabrowcnt values ( @name, @rows, convert(varchar(15), @crdate, 107) ) fetch t_crsr into @name, @crdate end select @sql = 'select * from #_tabrowcnt where 1=1' if @tablename is not null select @sql = @sql + ' and table_name = "'+@tablename+'"' if @rowcount is not null select @sql = @sql + ' and row_count = '+convert(varchar(10), @rowcount) select @sql = @sql + ' order by row_count ' + @opt exec ( @sql ) drop table #_tabrowcnt close t_crsr deallocate cursor t_crsr goto End_Proc Usage: print 'Usage: ' print 'sp_tabrowcount , , '''', ''''' print ' - Show only tables.' print ' - Show only tables with rows.' print ' '''' - Show row count for this table.' print ' '''' - Valid options are: ''desc'', ''asc'' or ''help''.' print 'All parameters are optional.' End_Proc: return @ret_status end go if @@error = 0 print "Procedimiento sp_tabrowcount instalado." go grant exec on sp_tabrowcount to public go /* Fin instalación para ASE 12.5.x */ exec sp_tabrowcount @opt = 'help' go