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

Preguntas similare

Leer las respuestas

#6 Rubén Garrigós
26/08/2008 - 18:55 | Informe spam
En caso de usar esta aproximación, no olvides poner un TOP 1 ( o el
equivalente con rownumber) de forma que "SELECT (ASIGNO VARIABLES) FROM
#TEMPORAL" trate únicamente una única fila. Si no lo hacemos así fallaría la
asignación que usemos con formato SELECT @var1=col1, @var2=col2,...

Rubén Garrigós
Solid Quality Mentors

"Isaias" wrote:

Bueno, alguna vez vi en un articulo que para substituir cursores en 2005 se
recomienda CTE's, pero para 2000, tablas temporales.

SELECT * INTO #TEMPORAL FROM TUTABLA...
WHILE EXITS (SELECT CampoIndice FROM #TEMPORAL)
BEGIN
SELECT (ASIGNO VARIABLES) FROM #TEMPORAL
EXEC PROCEDIMIENTO @VARIABLES
DELETE #TEMPORAL WHERE CampoIndice = @CampoIndice
CONTINUE
END
Saludos
IIslas


"Waldo" wrote:

> Gracias Ruben,
> Pero en el SELECT podrian venir mas de una fila.
>
> Segun veo, nadie recomienda el uso de cursores, es un tema que ya se habló,
> pero mi cursor no creo que tenga mas de 5 filas, en ese caso seria muy malo
> el desempeño ?
>
> Saludos
>
> Waldo
>
>
>
Respuesta Responder a este mensaje
#7 Waldo
26/08/2008 - 19:09 | Informe spam
Muchas gracias Ruben y IIslas,

Pruebo y les cuento como me fue.

Saludos

Waldo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida