Cursores

04/08/2004 - 21:33 por Roy | Informe spam
Buenas tardes foro, he estado viendo la ayuda del
Sqlserver con respecto a los cursores, y vi que puede
usarse asi :

DECLARE mycursor scroll DYNAMIC FOR
select
campo1,
campo2,
campo25
luego:
OPEN mycursor
FETCH NEXT FROM mycursor
into @ncampo1,@ncampo2,.@ncampo25
mi consulta es si por alli, no lo encontre en la ayuda,
de hacer referencia a los campos del cursor sin hacer el
INTO, o sea ejem:
FETCH NEXT FROM mycursor
set @ncampo1 =mycursor.campo1
set @ncampo2 =mycursor.campo2
..
esto porque a veces tengo cursores con bastantes campos y
hay que declarar las variables y colocarlas en el into,que
haciendo referencia directa al cursor evitas tanto declare

gracias

Preguntas similare

Leer las respuestas

#1 Isaías
04/08/2004 - 22:28 | Informe spam
En este foro, recomendamos NO UTILIZAR CURSORES, hay una
brigada ANTI-CURSORES que si les platicas un poco mas que
deseas hacer, te ayudan con T-SQL
Respuesta Responder a este mensaje
#2 roy
04/08/2004 - 23:41 | Informe spam
Ok, por ejem.

select campo1,campo2,campo3,campo4
from mytabla1

como puedo pasar los valores de los campos a unos
variables para realizar unos calculos. En este caso es
que uso el FETCH INTO, he hecho para para taer un valor
set @myvar=(select campo1 from my tabla where..)

o por ejem. un insert en una tabla donde los values son
columnas de una tabla y otras variables del
procedimiento :

OPEN cform_fac
FETCH NEXT FROM cform_fac
INTO @nserv_id,@ntipo_serv,@ncant,@nvalor,@ntotal
WHILE @@FETCH_STATUS = 0
Begin
INSERT into fac_detalle
(id_pago,
recibo,
no_solicitud,
serv_id,
cantidad,
valor,
descuento,
total,
userid_ing,
fec_ing,
userid_act,
fec_act) values(
@nid_pago --> Variable,
@nrecibo --> Variable,
@nsolic --> Variable,
@nserv_id --> campo del cursor,
@ncant --> campo del cursor,
@nvalor --> campo del cursor,
@ndescuento --> variable,
@ntotal --> campo del cursor,
user,
GETDATE(),
user,
GETDATE())
IF (@@ERROR <> 0)
begin
Rollback
Return -99
End
FETCH NEXT FROM cform_fac
INTO @nserv_id,@ntipo_serv,@ncant,@nvalor,@ntotal
End
Respuesta Responder a este mensaje
#3 Javier Loria
05/08/2004 - 05:40 | Informe spam
Hola Roy:
Que te parece algo como:
==INSERT into fac_detalle(id_pago , recibo , no_solicitud, serv_id ,
cantidad , valor
, descuento, total , userid_ing , fec_ing , userid_act,
fec_act)
SELECT @Nid_pag , @NSolic , Nserv_ID , NServ_ID ,
NCant , NValor
, @NDescuento, NTotal, USER , GETDATE(), User , GETDATE()
FROM (-- Tabla o SELECT que genero el Cursor)
Adicionalmente si es un INSERT podrias declarar algunas de las columnas
(userid_ing, fec_ing, userid_act, fec_act) con Default USER o GETDATE
respectivamente y hace el INSERT un poco mas sencillo.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

roy escribio:
Ok, por ejem.

select campo1,campo2,campo3,campo4
from mytabla1

como puedo pasar los valores de los campos a unos
variables para realizar unos calculos. En este caso es
que uso el FETCH INTO, he hecho para para taer un valor
set @myvar=(select campo1 from my tabla where..)

o por ejem. un insert en una tabla donde los values son
columnas de una tabla y otras variables del
procedimiento :

OPEN cform_fac
FETCH NEXT FROM cform_fac
INTO @nserv_id,@ntipo_serv,@ncant,@nvalor,@ntotal
WHILE @@FETCH_STATUS = 0
Begin
INSERT into fac_detalle
(id_pago,
recibo,
no_solicitud,
serv_id,
cantidad,
valor,
descuento,
total,
userid_ing,
fec_ing,
userid_act,
fec_act) values(
@nid_pago --> Variable,
@nrecibo --> Variable,
@nsolic --> Variable,
@nserv_id --> campo del cursor,
@ncant --> campo del cursor,
@nvalor --> campo del cursor,
@ndescuento --> variable,
@ntotal --> campo del cursor,
user,
GETDATE(),
user,
GETDATE())
IF (@@ERROR <> 0)
begin
Rollback
Return -99
End
FETCH NEXT FROM cform_fac
INTO @nserv_id,@ntipo_serv,@ncant,@nvalor,@ntotal
End
Respuesta Responder a este mensaje
#4 Roy
05/08/2004 - 08:49 | Informe spam
Ok javier, gracias, del insert te entiendo, y para
recuperar varias columnas de un select que no
necesariamente realizaras un insert sino para calculos u
otras cosas :

select campo1,campo2,campo3,campo4
from mytabla1

como puedo pasar los valores de los campos a unos
variables para realizar unos calculos. En este caso es
que uso el FETCH INTO.
Respuesta Responder a este mensaje
#5 Javier Loria
05/08/2004 - 17:36 | Informe spam
Hola Roy:
Exacto, y se hacen los calculos en la misma columna, en el mismo SELECT.
Si quieres y puedes postear lo que deseas hacer y tratamos de
reescribirlo.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Roy escribio:
Ok javier, gracias, del insert te entiendo, y para
recuperar varias columnas de un select que no
necesariamente realizaras un insert sino para calculos u
otras cosas :

select campo1,campo2,campo3,campo4
from mytabla1

como puedo pasar los valores de los campos a unos
variables para realizar unos calculos. En este caso es
que uso el FETCH INTO.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida