use sybsystemprocs go if exists ( select * from sysobjects where name = 'sp_tabrowcount' ) drop proc sp_tabrowcount go /* Inicio instalación para ASE 15.x */ print "Instalando el procedimiento sp_tabrowcount (ASE 15.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.2 -- 05/08/2007 -- Actualización para ASE 15.0. */ /* Reemplaza la función rowcnt() por row_count().*/ /* Agrega el parámetro @rowcount */ /* 0.2.1 -- 05/09/2007 -- Agrega la columna creation_date */ /* Se corrigió bug cuando 0 tablas en la bd. */ /* */ /* 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 int = NULL, @tablename varchar(30) = NULL, @opt varchar(4) = NULL, @debug bit = 0 as begin /* Opciones de sesión */ if @@trancount = 0 begin set chained off end set transaction isolation level 1 set nocount on /* Variables locales */ declare @ret_status int, @sql varchar(16384), @db_id smallint, @max_table_name int /* Valor de retorno del procedimiento */ set @ret_status = 0 /* Verificación del parámetro @opt */ if @opt is null set @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 /* Determina la longitud máxima para los nombres de las tablas */ select @max_table_name = max(len( name )) from sysobjects where type='U' if @max_table_name is null set @max_table_name = 30 /* ID de la base de datos */ set @db_id = db_id() /* Construye el SQL */ set @sql = 'select' if @top is not null set @sql = @sql + ' top '+convert(varchar(10), @top) set @sql = @sql + ' convert(varchar('+convert(varchar(10),@max_table_name)+'),name) as table_name, row_count('+convert(varchar(10),@db_id)+', object_id(name)) as row_count, convert(varchar(15),crdate,107) as creation_date from sysobjects where type="U"' if @tablename is not null set @sql = @sql + ' and name="'+@tablename+'"' if @rowcount is not null set @sql = @sql + ' and row_count('+convert(varchar(10),@db_id)+',object_id(name))='+convert(varchar(10),@rowcount) set @sql = @sql + ' order by row_count ' + @opt /* Ejecuta el SQL y muestra los datos de las tablas */ exec ( @sql ) if @debug = 1 print "*** SQL: %1!", @sql goto End_Proc /* Uso */ 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 15.x */ exec sp_tabrowcount @opt = 'help' go