[MsSql] Función contar registros en MS SqlServer2000



Muchas veces tenemos la necesidad de contar los registros de una tabla en nuestros desarrollos, comúnmente hacemos la típica consulta SELECT count(*) FROM Tabla1 que nos saca de apuros pero no siempre es la manera más optima porque podemos generar bloqueos de consulta si la tabla pertenece a un aplicativo transaccional, tiene millones de registros, etc.

Para este caso he diseñado esta función a nivel de BDD que consulta a nivel de los objetos de la instancia, las características de la tabla y capturar la cantidad de registros que tiene sin necesidad de hacer un recorrido completo a la tabla.

La función se crea a nivel de la base de datos como una función escalar, según el perfil o usuario con la creamos la podemos invocar para nuestro uso: SELECT [DBO].[FN_COUNTREGS] ('tabla1')

Esta función la he implementado en SQLSERVER2005 y SQLSERVER2008, ha funcionado sin inconvenientes.

-- ..:: Código de la función ::.. --

USE [BaseDeDatos]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
-- ==================================
-- Author: SEGANSOFT
-- Create date: 2010/03/17
-- Description: Calcula la cantidad registros que posee una tabla en la BDD
-- ==================================
*/
CREATE FUNCTION [dbo].[FN_COUNTREGS] (@p_tablename nvarchar(4000)-- nombre de la tabla)
RETURNS nvarchar(4000)
AS
BEGIN
/* Declare the return variable here */
DECLARE @v_cantidad AS nvarchar(250)
/* Add the T-SQL statements to compute the return value here */ -- Calcular la cantidad de registros de la tabla
SET @v_cantidad = (
 SELECT MAX(si.rows) as [Cantidad]
 FROM sysobjects so, sysindexes si
 WHERE (so.xtype = 'U')
            AND (si.id = OBJECT_ID(so.name))
            AND (so.name = @p_tablename)
)
RETURN @v_cantidad
END
SHARE

Hola a todos los que tienen los minutos de leer alguna de mis entradas en este blog, soy Ingeniero de Sistemas y tengo más de 15 años de experiencia en el desarrollo de sistemas de información para una compañia dedicada a las telecomunicaciones. Si alguno de mis entradas te ha servido tanto como a mi dale compartir en tu red social favorita (que no cuesta nada). Saludos desde Bogotá - Colombia

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario