Sugerencia para no usar cursor

25/08/2008 - 19:31 por Waldo | Informe spam
Hola amigos, necesito auda para resolver lo siguiente,

Tengo un SELECT que abre un cursor, recupero un par de valores, los guardo
en varibles y luego tendria que pasarlos a un procedimiento almacenado.

Algo como

WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM miCursor
INTO @var1, @var2
EXEC miProcedimiento @var1, @var2
END

Como podria pasar eso de otra forma para no usar cursor?

Algo como :

EXEC miProcedimiento ( SELECT campo1, campo2)

La forma :

INSERT INTO mi tabla
SELECT ( x, x , x )

no me sirve porque el sp 'miProcedimiento' en su interiror tiene un par de
SELECTs y llamadas a otros sp's para obtener una serie de datos que son
necesarios para hacer el INSERT final.

Ese seria el problema

Desde ya muchas gracias

Waldo
 

Leer las respuestas

#1 Rubén Garrigós
26/08/2008 - 09:10 | Informe spam
Hola Waldo,

Si el cursor únicamente recupera una fila de valores podrías asignar
directamente el valor de dichas variables en una select y luego utilizarlas
en el EXEC:

select @var1=campo1, @var2=campo2 from...
EXEC miProcedimiento @var1,var2

Rubén Garrigós
Solid Quality Mentors

"Waldo" wrote:

Hola amigos, necesito auda para resolver lo siguiente,

Tengo un SELECT que abre un cursor, recupero un par de valores, los guardo
en varibles y luego tendria que pasarlos a un procedimiento almacenado.

Algo como

WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM miCursor
INTO @var1, @var2
EXEC miProcedimiento @var1, @var2
END

Como podria pasar eso de otra forma para no usar cursor?

Algo como :

EXEC miProcedimiento ( SELECT campo1, campo2)

La forma :

INSERT INTO mi tabla
SELECT ( x, x , x )

no me sirve porque el sp 'miProcedimiento' en su interiror tiene un par de
SELECTs y llamadas a otros sp's para obtener una serie de datos que son
necesarios para hacer el INSERT final.

Ese seria el problema

Desde ya muchas gracias

Waldo





Preguntas similares