Declare cursor con SP

21/07/2006 - 23:40 por Juan Carlos Flores | Informe spam
Necesito crear un cursor para recorrerlo, pero deso usar un SP que ya
tengo para crearlo, como lo hago ?


Declare miCursor Cursro for SELECT


Quiero reemplazar el SELECT por un SP que recibe parametros.


SALUDOS



JCF

Preguntas similare

Leer las respuestas

#6 Carlos Sacristán
24/07/2006 - 14:36 | Informe spam
Suponiendo que el primer procedimiento almacenado devuelve dos columnas
(A y B), un ejemplo para manejar estos resultados sería:

***************************************************************

que lo que devuelve el primer procedimiento
CREATE TABLE #t ...

INSERT #t
EXECUTE el_primer_procedimiento @param1=

tabla temporal creada

***************************************************************

Espero haberme explicado

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Juan Carlos Flores" escribió en el
mensaje news:#
Me podrías ampliar mas el como hacerlo ? Porque no debo modificar el
primer SP, se puede sin hacer eso ?

Saludos


jCF

Carlos Sacristán escribió:
> ¿No puedes insertar el resultado de ese primer procedimiento en una
> tabla temporal y manejar los resultados en el cursor que comentas?
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "Juan Carlos Flores" escribió en


el
> mensaje news:e$
>> Bien, tengo un SP que me devuelve un cursor, ese SP lo uso en unos
>> procedimientos en .net, y lleva buena cantidad de codigo el SP en
>> mención. Resulta que ahora en otro SP necesito usar el cursor generado
>> por el primer SP, recorrer sus datos, y no se como hacer para cargar


ese
>> cursor sin tener que usar poner el select del primer dentro del


segundo,
>> ademas por mantenimiento de codigo es un problema.
>>
>> Espero haberme explicado.
>>
>>
>> Saludos
>>
>>
>> JCF
>>
>> Gustavo Larriera (MVP) escribió:
>>> No entiendo en detalle lo que intentas hacer. De todas formas entiendo
> que
>>> si usas variables de tipo CURSOR puede ser útil para lo que dices.
>>>
>>> Tal vez si explicas con más nivel de detalle tu problema concreto, te
>>> podamos ayudar mejor.
>>>
>
>
Respuesta Responder a este mensaje
#7 Alejandro Mesa
24/07/2006 - 14:59 | Informe spam
Juan,

A que te refieres con lo siguiente?

Bien, tengo un SP que me devuelve un cursor



Te refieres a que ese procedimiento almacenado devuelve un cursor en un
parametro de salida?

De ser asi entonces solo debes pasar la variable tipo cursor que sera
utilizada por el parametro de salida.

Ejemplo:

use northwind
go

create procedure dbo.p1
@country nvarchar(15) = N'Spain',
@orders cursor varying output
as
set nocount on

set @orders = cursor local fast_forward for
select
oh.orderid, oh.orderdate, oh.customerid
from
dbo.orders as oh
inner join
dbo.Customers as c
on oh.customerid = c.customerid
where
c.country = @country

open @orders

return @@error
go

declare @c cursor
declare @orderid int
declare @orderdate datetime
declare @customerid nchar(5)

exec dbo.p1 @orders = @c output

if cursor_status('variable', '@c') = 1
begin

while 1 = 1
begin
fetch next from @c into @orderid, @orderdate, @customerid

if @@error != 0 or @@fetch_status != 0 break

select @orderid, @orderdate, @customerid
end

close @c
deallocate @c
end
go

drop procedure dbo.p1
go


AMB


"Juan Carlos Flores" wrote:

Bien, tengo un SP que me devuelve un cursor, ese SP lo uso en unos
procedimientos en .net, y lleva buena cantidad de codigo el SP en
mención. Resulta que ahora en otro SP necesito usar el cursor generado
por el primer SP, recorrer sus datos, y no se como hacer para cargar ese
cursor sin tener que usar poner el select del primer dentro del segundo,
ademas por mantenimiento de codigo es un problema.

Espero haberme explicado.


Saludos


JCF

Gustavo Larriera (MVP) escribió:
> No entiendo en detalle lo que intentas hacer. De todas formas entiendo que
> si usas variables de tipo CURSOR puede ser útil para lo que dices.
>
> Tal vez si explicas con más nivel de detalle tu problema concreto, te
> podamos ayudar mejor.
>

Respuesta Responder a este mensaje
#8 Juan Carlos Flores
24/07/2006 - 15:18 | Informe spam
Me podrías ampliar mas el como hacerlo ? Porque no debo modificar el
primer SP, se puede sin hacer eso ?

Saludos


jCF

Carlos Sacristán escribió:
¿No puedes insertar el resultado de ese primer procedimiento en una
tabla temporal y manejar los resultados en el cursor que comentas?


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Juan Carlos Flores" escribió en el
mensaje news:e$
Bien, tengo un SP que me devuelve un cursor, ese SP lo uso en unos
procedimientos en .net, y lleva buena cantidad de codigo el SP en
mención. Resulta que ahora en otro SP necesito usar el cursor generado
por el primer SP, recorrer sus datos, y no se como hacer para cargar ese
cursor sin tener que usar poner el select del primer dentro del segundo,
ademas por mantenimiento de codigo es un problema.

Espero haberme explicado.


Saludos


JCF

Gustavo Larriera (MVP) escribió:
No entiendo en detalle lo que intentas hacer. De todas formas entiendo




que
si usas variables de tipo CURSOR puede ser útil para lo que dices.

Tal vez si explicas con más nivel de detalle tu problema concreto, te
podamos ayudar mejor.







Respuesta Responder a este mensaje
#9 Juan Carlos Flores
24/07/2006 - 15:43 | Informe spam
Carlos, voy a probarlo ahorita mismo, muchas gracias.


Saludos



JCF

Carlos Sacristán escribió:
Suponiendo que el primer procedimiento almacenado devuelve dos columnas
(A y B), un ejemplo para manejar estos resultados sería:

***************************************************************

que lo que devuelve el primer procedimiento
CREATE TABLE #t ...

INSERT #t
EXECUTE el_primer_procedimiento @param1=

tabla temporal creada

***************************************************************

Espero haberme explicado

Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Juan Carlos Flores" escribió en el
mensaje news:#
Me podrías ampliar mas el como hacerlo ? Porque no debo modificar el
primer SP, se puede sin hacer eso ?

Saludos


jCF

Carlos Sacristán escribió:
¿No puedes insertar el resultado de ese primer procedimiento en una
tabla temporal y manejar los resultados en el cursor que comentas?


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Juan Carlos Flores" escribió en




el
mensaje news:e$
Bien, tengo un SP que me devuelve un cursor, ese SP lo uso en unos
procedimientos en .net, y lleva buena cantidad de codigo el SP en
mención. Resulta que ahora en otro SP necesito usar el cursor generado
por el primer SP, recorrer sus datos, y no se como hacer para cargar






ese
cursor sin tener que usar poner el select del primer dentro del






segundo,
ademas por mantenimiento de codigo es un problema.

Espero haberme explicado.


Saludos


JCF

Gustavo Larriera (MVP) escribió:
No entiendo en detalle lo que intentas hacer. De todas formas entiendo




que
si usas variables de tipo CURSOR puede ser útil para lo que dices.

Tal vez si explicas con más nivel de detalle tu problema concreto, te
podamos ayudar mejor.












Respuesta Responder a este mensaje
#10 Juan Carlos Flores
24/07/2006 - 17:36 | Informe spam
Nop... me refiero a que el SP devuelve un resultado de una sentencia
select, que mal he llamado yo cursor,.


Saludos.



JCF

Alejandro Mesa escribió:
Juan,

A que te refieres con lo siguiente?

Bien, tengo un SP que me devuelve un cursor



Te refieres a que ese procedimiento almacenado devuelve un cursor en un
parametro de salida?

De ser asi entonces solo debes pasar la variable tipo cursor que sera
utilizada por el parametro de salida.

Ejemplo:

use northwind
go

create procedure dbo.p1
@country nvarchar(15) = N'Spain',
@orders cursor varying output
as
set nocount on

set @orders = cursor local fast_forward for
select
oh.orderid, oh.orderdate, oh.customerid
from
dbo.orders as oh
inner join
dbo.Customers as c
on oh.customerid = c.customerid
where
c.country = @country

open @orders

return @@error
go

declare @c cursor
declare @orderid int
declare @orderdate datetime
declare @customerid nchar(5)

exec dbo.p1 @orders = @c output

if cursor_status('variable', '@c') = 1
begin

while 1 = 1
begin
fetch next from @c into @orderid, @orderdate, @customerid

if @@error != 0 or @@fetch_status != 0 break

select @orderid, @orderdate, @customerid
end

close @c
deallocate @c
end
go

drop procedure dbo.p1
go


AMB


"Juan Carlos Flores" wrote:

Bien, tengo un SP que me devuelve un cursor, ese SP lo uso en unos
procedimientos en .net, y lleva buena cantidad de codigo el SP en
mención. Resulta que ahora en otro SP necesito usar el cursor generado
por el primer SP, recorrer sus datos, y no se como hacer para cargar ese
cursor sin tener que usar poner el select del primer dentro del segundo,
ademas por mantenimiento de codigo es un problema.

Espero haberme explicado.


Saludos


JCF

Gustavo Larriera (MVP) escribió:
No entiendo en detalle lo que intentas hacer. De todas formas entiendo que
si usas variables de tipo CURSOR puede ser útil para lo que dices.

Tal vez si explicas con más nivel de detalle tu problema concreto, te
podamos ayudar mejor.

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