[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
No hay comentarios: