ayuda con cursor URGENTE

17/09/2008 - 20:07 por aaron | Informe spam
saludos foristas
miren tengo este cursor

DECLARE @factura varchar(7),@subsal float,
@cargo float,@abonofloat

DECLARE saldo_cursor scroll cursor
FOR SELECT NO_FACTURA,sum(cargo)as cargo,sum(abono) as abono
FROM ANTSALDOS
group by no_factura
order by no_factura
for update of subsaldo

OPEN saldo_cursor

WHILE @@FETCH_STATUS = 0
BEGIN
fetch next from saldo_cursor
INTO @factura,@cargo,@abono
update antsaldos
set subsaldo = @cargo-@abono
where CURRENT OF saldo_cursor

PERO ME MANDA ESTE ERROR

Warning: Null value is eliminated by an aggregate or other SET operation.
Msg 16929, Level 16, State 1, Procedure temp4, Line 27
The cursor is READ ONLY.
The statement has been terminated.
Msg 16929, Level 16, State 1, Procedure temp4, Line 27
The cursor is READ ONLY.

ESPERO PUEDAN AYUDARME
GRACIAS

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
18/09/2008 - 09:40 | Informe spam
Hola Aaron,

El problema es que estás agrupando en la consulta (N filas en 1). Sería
preferible que hicieras todo esto sin un cursor simplemente haciendo un
update de la información o utilizaras otra tabla para mantener este estado de
los saldos en vez de hacer la agrupación.

Rubén Garrigós
Solid Quality Mentors

"aaron" wrote:

saludos foristas
miren tengo este cursor

DECLARE @factura varchar(7),@subsal float,
@cargo float,@abonofloat

DECLARE saldo_cursor scroll cursor
FOR SELECT NO_FACTURA,sum(cargo)as cargo,sum(abono) as abono
FROM ANTSALDOS
group by no_factura
order by no_factura
for update of subsaldo

OPEN saldo_cursor

WHILE @@FETCH_STATUS = 0
BEGIN
fetch next from saldo_cursor
INTO @factura,@cargo,@abono
update antsaldos
set subsaldo = @
where CURRENT OF saldo_cursor

PERO ME MANDA ESTE ERROR

Warning: Null value is eliminated by an aggregate or other SET operation.
Msg 16929, Level 16, State 1, Procedure temp4, Line 27
The cursor is READ ONLY.
The statement has been terminated.
Msg 16929, Level 16, State 1, Procedure temp4, Line 27
The cursor is READ ONLY.

ESPERO PUEDAN AYUDARME
GRACIAS
Respuesta Responder a este mensaje
#2 aaron
18/09/2008 - 19:22 | Informe spam
entonces
esto no se puede hacer con los cursor
pues de esa forma se podria hacer un poco mejor
y la forma de hacerlo pues necesito saber el saldo de las facturas
como lo prodria hacer si la tabla tiene n Facturas con N importe en CARGO y
otro tanto en Abono

Gracias

"Rubén Garrigós" wrote:

Hola Aaron,

El problema es que estás agrupando en la consulta (N filas en 1). Sería
preferible que hicieras todo esto sin un cursor simplemente haciendo un
update de la información o utilizaras otra tabla para mantener este estado de
los saldos en vez de hacer la agrupación.

Rubén Garrigós
Solid Quality Mentors

"aaron" wrote:

> saludos foristas
> miren tengo este cursor
>
> DECLARE @factura varchar(7),@subsal float,
> @cargo float,@abonofloat
>
> DECLARE saldo_cursor scroll cursor
> FOR SELECT NO_FACTURA,sum(cargo)as cargo,sum(abono) as abono
> FROM ANTSALDOS
> group by no_factura
> order by no_factura
> for update of subsaldo
>
> OPEN saldo_cursor
>
> WHILE @@FETCH_STATUS = 0
> BEGIN
> fetch next from saldo_cursor
> INTO @factura,@cargo,@abono
> update antsaldos
> set subsaldo = @
> where CURRENT OF saldo_cursor
>
> PERO ME MANDA ESTE ERROR
>
> Warning: Null value is eliminated by an aggregate or other SET operation.
> Msg 16929, Level 16, State 1, Procedure temp4, Line 27
> The cursor is READ ONLY.
> The statement has been terminated.
> Msg 16929, Level 16, State 1, Procedure temp4, Line 27
> The cursor is READ ONLY.
>
> ESPERO PUEDAN AYUDARME
> GRACIAS
Respuesta Responder a este mensaje
#3 Rubén Garrigós
18/09/2008 - 19:56 | Informe spam
Hola Aaron,

Si deseas obtener dicho valor de forma puntual podrías obtenerlo con tu
consulta simplemente añadiendo una columna que sea la diferencia entre
sum(cargo) y sum(abono).

Si deseas almacenar dicha información para consultarla muy frecuentemente te
recomendaría:
a) recalcularla periodicamente en otro lugar más apropiado (no tienes una
tabla facturas donde tenga más sentido añadir la columna?)
b)usar una vista indexada donde tengas la información ya agregada
(únicamente si hay pocos cambios en esta tabla respecto al numero de
consultas)

Rubén Garrigós
Solid Quality Mentors

"aaron" wrote:


entonces
esto no se puede hacer con los cursor
pues de esa forma se podria hacer un poco mejor
y la forma de hacerlo pues necesito saber el saldo de las facturas
como lo prodria hacer si la tabla tiene n Facturas con N importe en CARGO y
otro tanto en Abono

Gracias

"Rubén Garrigós" wrote:

> Hola Aaron,
>
> El problema es que estás agrupando en la consulta (N filas en 1). Sería
> preferible que hicieras todo esto sin un cursor simplemente haciendo un
> update de la información o utilizaras otra tabla para mantener este estado de
> los saldos en vez de hacer la agrupación.
>
> Rubén Garrigós
> Solid Quality Mentors
>
> "aaron" wrote:
>
> > saludos foristas
> > miren tengo este cursor
> >
> > DECLARE @factura varchar(7),@subsal float,
> > @cargo float,@abonofloat
> >
> > DECLARE saldo_cursor scroll cursor
> > FOR SELECT NO_FACTURA,sum(cargo)as cargo,sum(abono) as abono
> > FROM ANTSALDOS
> > group by no_factura
> > order by no_factura
> > for update of subsaldo
> >
> > OPEN saldo_cursor
> >
> > WHILE @@FETCH_STATUS = 0
> > BEGIN
> > fetch next from saldo_cursor
> > INTO @factura,@cargo,@abono
> > update antsaldos
> > set subsaldo = @
> > where CURRENT OF saldo_cursor
> >
> > PERO ME MANDA ESTE ERROR
> >
> > Warning: Null value is eliminated by an aggregate or other SET operation.
> > Msg 16929, Level 16, State 1, Procedure temp4, Line 27
> > The cursor is READ ONLY.
> > The statement has been terminated.
> > Msg 16929, Level 16, State 1, Procedure temp4, Line 27
> > The cursor is READ ONLY.
> >
> > ESPERO PUEDAN AYUDARME
> > GRACIAS
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida