SELECT TOP....

27/11/2006 - 15:09 por Lord Voldemort | Informe spam
Hola Grupo...

quiero hacer un procedimiento almacenado que me devuelva x cantidad de
registros...
donde x sea un parametro..

por ejemplo si quiero traer 100 registros hago esto..
SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
solo que estos 100 estan fijos,
quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo que
sea..
ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no me
funciona...

gracias..

Jairo Hernandez...

Preguntas similare

Leer las respuestas

#1 Maxi
27/11/2006 - 15:23 | Informe spam
Hola, en sql2000 no podes hacer eso a menos que uses SQLDinamico
(sp_executesql) en 2005 ya se permite el uso de variables dentro del TOP


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"Lord Voldemort" escribió en el mensaje
news:%
Hola Grupo...

quiero hacer un procedimiento almacenado que me devuelva x cantidad de
registros...
donde x sea un parametro..

por ejemplo si quiero traer 100 registros hago esto..
SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
solo que estos 100 estan fijos,
quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo
que sea..
ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no me
funciona...

gracias..

Jairo Hernandez...

Respuesta Responder a este mensaje
#2 Alejandro Mesa
27/11/2006 - 15:24 | Informe spam
No funciona en versiones previas a 2005. Pudieras usar sql dinamico, pero
primero lee sobre los pros y contras de usar este metodo.

use northwind
go

create procedure dbo.p1
@i int = 10
as
set nocount on

declare @sql nvarchar(4000)

set @sql = N'select top ' + ltrim(@i) + N' * from dbo.orders'

exec sp_executesql @sql

return @@error
go

exec dbo.p1
exec dbo.p1 150
exec dbo.p1 200
go

drop procedure dbo.p1
go


Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html


AMB

"Lord Voldemort" wrote:

Hola Grupo...

quiero hacer un procedimiento almacenado que me devuelva x cantidad de
registros...
donde x sea un parametro..

por ejemplo si quiero traer 100 registros hago esto..
SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
solo que estos 100 estan fijos,
quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo que
sea..
ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no me
funciona...

gracias..

Jairo Hernandez...



Respuesta Responder a este mensaje
#3 Lord Voldemort
27/11/2006 - 15:55 | Informe spam
cheque gracias...
al menos ahora se que no se puede..

saludos..



"Alejandro Mesa" escribió en el
mensaje news:
No funciona en versiones previas a 2005. Pudieras usar sql dinamico, pero
primero lee sobre los pros y contras de usar este metodo.

use northwind
go

create procedure dbo.p1
@i int = 10
as
set nocount on

declare @sql nvarchar(4000)

set @sql = N'select top ' + ltrim(@i) + N' * from dbo.orders'

exec sp_executesql @sql

return @@error
go

exec dbo.p1
exec dbo.p1 150
exec dbo.p1 200
go

drop procedure dbo.p1
go


Las virtudes y maldades del SQL dinámico
http://www.hayes.ch/sql/sql_dinamico.html


AMB

"Lord Voldemort" wrote:

Hola Grupo...

quiero hacer un procedimiento almacenado que me devuelva x cantidad de
registros...
donde x sea un parametro..

por ejemplo si quiero traer 100 registros hago esto..
SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
solo que estos 100 estan fijos,
quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo
que
sea..
ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no
me
funciona...

gracias..

Jairo Hernandez...



Respuesta Responder a este mensaje
#4 BitOne®
27/11/2006 - 16:20 | Informe spam
Hola Lord Voldemort:

Trata:


use pubs
go
if object_id('usp_authors','P') is not null
drop procedure usp_authors
go
create procedure usp_authors @cnt int
as
begin
set rowcount @cnt

select * from authors
end

go
exec usp_authors 5

si te fijas puedes pasar a la variable set rowcount un parametro el cual
sera la cantidad de registros que necesitas
sean devueltos al usuario que realiza la consulta.

Saludos,

BitOne®



"Lord Voldemort" wrote in message
news:#
Hola Grupo...

quiero hacer un procedimiento almacenado que me devuelva x cantidad de
registros...
donde x sea un parametro..

por ejemplo si quiero traer 100 registros hago esto..
SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
solo que estos 100 estan fijos,
quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo


que
sea..
ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no me
funciona...

gracias..

Jairo Hernandez...


Respuesta Responder a este mensaje
#5 BitOne®
27/11/2006 - 16:55 | Informe spam
Otro detalle al final del procedimiento colocale set rowcount 0
para que devuelva al estado normal la seccion.

Saludos,

BitOne®

"BitOne®" wrote in message
news:euT#
Hola Lord Voldemort:

Trata:


use pubs
go
if object_id('usp_authors','P') is not null
drop procedure usp_authors
go
create procedure usp_authors @cnt int
as
begin
set rowcount @cnt

select * from authors
end

go
exec usp_authors 5

si te fijas puedes pasar a la variable set rowcount un parametro el cual
sera la cantidad de registros que necesitas
sean devueltos al usuario que realiza la consulta.

Saludos,

BitOne®



"Lord Voldemort" wrote in message
news:#
> Hola Grupo...
>
> quiero hacer un procedimiento almacenado que me devuelva x cantidad de
> registros...
> donde x sea un parametro..
>
> por ejemplo si quiero traer 100 registros hago esto..
> SELECT TOP 100 dbo.Envios.IdEnvio, dbo.Envios.ReferenciaEnvio ..etc..
> solo que estos 100 estan fijos,
> quiero algo asi.. pero uno le pase la cantidad100, 150, 139, 2000 lo
que
> sea..
> ya probe poner SELECT TOP @Cantidad dbo.Envios.IdEnvio, etc pero no


me
> funciona...
>
> gracias..
>
> Jairo Hernandez...
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida