Procedimiento que no funciona

29/06/2007 - 10:00 por Angel Zapata | Informe spam
Hola a todos,

tengo este procedimiento para actualizar los datos de una tabla en función
del resultado de una consulta, pero algo no he tenido que hacer bien pues no
funciona y no le encuentro la punta.

Muchas gracias de antemano por su ayuda


Alter PROCEDURE spHojaCargaLiquidacionArticulo
@CargaNumero AS Bigint,
@AlbaranEjercicio AS VarChar(4),
@AlbaranCanal AS Smallint,
@AlbaranNumero AS Bigint AS
DECLARE @ArticuloCodigo AS Bigint,
@ArticuloConfirmado AS Smallint,
@ArticuloCantidad AS Smallint
DECLARE CursorArticulos CURSOR FOR

SELECT HojaCargaArticulo.CargaArticulo, HojaCargaArticulo.CargaConfirmado,
SUM(Pedido_Det.PdtCantidad) AS Cantidad
FROM HojaCargaAlbaran INNER JOIN Albaran_Pedido ON
HojaCargaAlbaran.CargaAlbaran = Albaran_Pedido.AlpAlbCodigo
AND HojaCargaAlbaran.CargaAño = Albaran_Pedido.AlpAlbAño
AND HojaCargaAlbaran.CargaCanal = Albaran_Pedido.AlpAlbPcaCanCodigo
INNER JOIN Pedido_Det ON Albaran_Pedido.AlpAlbPcaCanCodigo Pedido_Det.PdtPcaCanCodigo
AND Albaran_Pedido.AlpPcaAño = Pedido_Det.PdtPcaAño
AND Albaran_Pedido.AlpPcaCodigo = Pedido_Det.PdtPcaCodigo
INNER JOIN HojaCargaArticulo ON HojaCargaArticulo.CargaArticulo Pedido_Det.PdtArtCodigo
AND HojaCargaAlbaran.CargaNumero = HojaCargaArticulo.CargaNumero
WHERE HojaCargaAlbaran.CargaNumero = @CargaNumero
AND HojaCargaAlbaran.CargaAño = @AlbaranEjercicio
AND HojaCargaAlbaran.CargaCanal = @AlbaranCanal
AND HojaCargaAlbaran.CargaAlbaran = @AlbaranNumero
GROUP BY HojaCargaArticulo.CargaArticulo, HojaCargaArticulo.CargaConfirmado
OPEN CursorArticulos
FETCH NEXT FROM CursorArticulos
INTO @ArticuloCodigo, @ArticuloConfirmado, @ArticuloCantidad
WHILE @@FETCH_STATUS = 0
BEGIN
/* Actualiza articulos confirmados en hoja de carga */
UPDATE HojaCargaArticulo SET HojaCargaArticulo.CargaConfirmado @ArticuloConfirmado - @ArticuloCantidad
WHERE HojaCargaArticulo.CargaNumero=@CargaNumero
AND HojaCargaArticulo.CargaArticulo = @ArticuloCodigo
END
CLOSE CursorArticulos
DEALLOCATE CursorArticulos

Angel Zapata
"Si no sabes hacia adonde vas, lo mas probable es que no llegues a ninguna
parte"
 

Leer las respuestas

#1 Maxi
29/06/2007 - 14:44 | Informe spam
Hola Angel, podrias definir mejor "NO Funciona???" a que te referis con
ello?


Pregunta: porque estas haciendo un cursor? usa directamente la instruccion
update sin cursores yza que estos no son para nada recomendados por su
lentitud y ademas no veo la necesidad en lo que estas haciendo de poner uno
de ellos

-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Angel Zapata" <a n g e l . z a p a t a @ s i g l h o g a r x x i . c o m>
escribió en el mensaje news:
Hola a todos,

tengo este procedimiento para actualizar los datos de una tabla en función
del resultado de una consulta, pero algo no he tenido que hacer bien pues
no
funciona y no le encuentro la punta.

Muchas gracias de antemano por su ayuda


Alter PROCEDURE spHojaCargaLiquidacionArticulo
@CargaNumero AS Bigint,
@AlbaranEjercicio AS VarChar(4),
@AlbaranCanal AS Smallint,
@AlbaranNumero AS Bigint AS
DECLARE @ArticuloCodigo AS Bigint,
@ArticuloConfirmado AS Smallint,
@ArticuloCantidad AS Smallint
DECLARE CursorArticulos CURSOR FOR

SELECT HojaCargaArticulo.CargaArticulo, HojaCargaArticulo.CargaConfirmado,
SUM(Pedido_Det.PdtCantidad) AS Cantidad
FROM HojaCargaAlbaran INNER JOIN Albaran_Pedido ON
HojaCargaAlbaran.CargaAlbaran = Albaran_Pedido.AlpAlbCodigo
AND HojaCargaAlbaran.CargaAño = Albaran_Pedido.AlpAlbAño
AND HojaCargaAlbaran.CargaCanal = Albaran_Pedido.AlpAlbPcaCanCodigo
INNER JOIN Pedido_Det ON Albaran_Pedido.AlpAlbPcaCanCodigo > Pedido_Det.PdtPcaCanCodigo
AND Albaran_Pedido.AlpPcaAño = Pedido_Det.PdtPcaAño
AND Albaran_Pedido.AlpPcaCodigo = Pedido_Det.PdtPcaCodigo
INNER JOIN HojaCargaArticulo ON HojaCargaArticulo.CargaArticulo > Pedido_Det.PdtArtCodigo
AND HojaCargaAlbaran.CargaNumero = HojaCargaArticulo.CargaNumero
WHERE HojaCargaAlbaran.CargaNumero = @CargaNumero
AND HojaCargaAlbaran.CargaAño = @AlbaranEjercicio
AND HojaCargaAlbaran.CargaCanal = @AlbaranCanal
AND HojaCargaAlbaran.CargaAlbaran = @AlbaranNumero
GROUP BY HojaCargaArticulo.CargaArticulo,
HojaCargaArticulo.CargaConfirmado
OPEN CursorArticulos
FETCH NEXT FROM CursorArticulos
INTO @ArticuloCodigo, @ArticuloConfirmado, @ArticuloCantidad
WHILE @@FETCH_STATUS = 0
BEGIN
/* Actualiza articulos confirmados en hoja de carga */
UPDATE HojaCargaArticulo SET HojaCargaArticulo.CargaConfirmado > @ArticuloConfirmado - @ArticuloCantidad
WHERE HojaCargaArticulo.CargaNumero=@CargaNumero
AND HojaCargaArticulo.CargaArticulo = @ArticuloCodigo
END
CLOSE CursorArticulos
DEALLOCATE CursorArticulos

Angel Zapata
"Si no sabes hacia adonde vas, lo mas probable es que no llegues a ninguna
parte"


Preguntas similares