Cita:
Iniciado por solosoy Amigo graxias por tu respuesta, quisiera saber si sto ,o puedo hacer con el sql 2000 y tb haber si me mandas tu ejemplo de como ponerlo en visual.net te estaria muy agradecido, ya que me gusta muxo esto de la programacion pero a la vez soy novato; haber si te acuerdas de antemano muchicimas graxias
Bueno el ejemplo que tengo esta aplicado a partir de SQL Server 2005 para adelante el código que tengo es independiente ya que consulto lo que me filtra el SQL Server.
Llegando de estudiar en la noche te paso el código en este tema.
Mira en SQL Server 2000 podrías hacer lo siguiente (no lo he probado seria cuestion de que lo pruebes) como no hay row_numer ni over podrías por ejemplo crear una tabla temporal que tenga todos los datos de tu tabla principal mas una columna que sea de tipo IDENTITY con la finalidad que cada vez que llenas esta tabla se genera automáticamente la columna IDENTITY de forma creciente y asi para que puedas filtrar con los parametros @INI y @FIN
Código SQL:
Ver original-- =============================================
-- Author: Luis Fernando
-- Create date: 10/02/2009
-- Description: Procedimiento que simula el Limit de MySQL Server en SQL Server 2000
-- =============================================
ALTER PROCEDURE USP_LIMIT
(
@TBL VARCHAR(MAX), @COL VARCHAR(MAX), @INI INT,
@FIN INT
)
AS
SET NOCOUNT ON;
BEGIN TRY
DECLARE @SQL NVARCHAR(MAX) -- DECLARANDO VARIABLE A EJECUTAR
CREATE TABLE #TEMP(NUMERO IDENTITY, CAMPO1 INT, CAMPO2 VARCHAR(5)) -- ACA PONES TODOS LAS COLUMNAS DE TUS TABLA CON LA DIFERENCIA DE LA COLUMNA IDENTITY
-- ACA LLENAMOS LA TABLA TEMPORAL CON LOS DATOS DE TU TABLA NO SE PONE LA COLUMNA IDENTITY YA QUE ESTE SE GENERA AUTOMATICAMENTE
-- ADEMAS PUEDES INDICAR FILTROS SI ES NECESARIO
SET @SQL = N'INSERT INTO #TEMP (CAMPO1,CAMPO2)
SELECT * FROM '+ @TBL +'
WHERE CAMPO1 = 4'
-- LUEGO REALIZAMOS SOLO EL LISTADO DE LA CANTIDAD DE REGISTROS QUE QUEREMOS OBTENER
SELECT * FROM #TEMP
WHERE NUMERO>=@INI AND NUMERO<=@FIN
-- ELIMINAMOS LA TABLA TEMPORAL CREADA
DROP TABLE #TEMP;
END TRY
BEGIN CATCH
PRINT 'NUMERO DE ERROR: ' + CONVERT(VARCHAR,ERROR_NUMBER());
PRINT 'MENSAJE DE ERROR: ' + ERROR_MESSAGE();
END CATCH
GO
Este código no lo he probado pero mas o menos debería funcionar en SQL SERVER 2000 la PERFORMANCE seria cuestión de medir, como te dije no tengo SQL SERVER 2000 en mi trabajo ni mucho menos ENTORNO para PROGRAMAR pero cuando llegue a casa te paso el código
Saludos