on 09-02-2009 10:17 PM
HOLA A TODOS, Tengo un codigo que permite realizar la salida de mercancias de manera directa. pero me está marcando un error al hacer la salida de mercancias desde sapb1. El error es [SQL Server]Subquery returned more than 1 value. this is not permitted when the subquery follows =,!=,<,>=, >, >= or when the subquery es used as an expression. (CINF). Tengo el inicio del query con In para eliminar esas inconsistencias pero de cual quier modo marca el mismo error. Si alguien sabe de sql que pueda orientarme agradecere su apoyo. anexo el query con el que estoy trabajando.
SALUDOS Y GRACIAS DE ANTEMANO POR SU APOY
IF @transaction_type in ('A') AND @object_type in ('60')
BEGIN
DECLARE @ITEMCODEOUT NVARCHAR (20)
DECLARE @QUANTITYOUT NUMERIC (10)
DECLARE @WHSCODEOUT NVARCHAR (20)
SET @CAPAINV = 0
SET @QUANTITYOUT = 0
SET @LINE = 0
SET @ASIGNAR = 0
SET @ITEMCODEOUT= ''
SET @PED = ''
SET @WHSCODEOUT=''
SET @EXISTENCIA = 0
SET @ASIGNARTMP = 0
SET @ASIGNAR = 0
SET @ERROR2=0
DECLARE REC5 SCROLL CURSOR FOR
SELECT LINENUM, ITEMCODE, QUANTITY, WHSCODE FROM IGE1
WHERE DOCENTRY = @list_of_cols_val_tab_del
OPEN REC5
FETCH FIRST FROM REC5 INTO @LINE,@ITEMCODEOUT, @QUANTITYOUT, @WHSCODEOUT
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ASIGNAR = @QUANTITYOUT
SET @ASIGNARTMP = @ASIGNAR
WHILE @ASIGNAR > 0
BEGIN
SET @CAPAINV = (SELECT TOP 1 ID FROM PEDIMENTOS WHERE ITEMCODE = @ITEMCODEOUT
/* AND WHSCODE = @WHSCODEOUT */ AND DISPONIBLE > 0
ORDER BY FENTRADA ASC )
SET @PED = (SELECT TOP 1 PEDIMENTO FROM PEDIMENTOS WHERE ID = @CAPAINV AND DISPONIBLE > 0 ORDER BY FENTRADA DESC )
SET @EXISTENCIA = (SELECT DISPONIBLE FROM PEDIMENTOS WHERE PEDIMENTO = @PED AND ITEMCODE = @ITEMCODEOUT)
SET @ASIGNARTMP = (SELECT CASE WHEN @ASIGNAR >=@EXISTENCIA THEN @EXISTENCIA ELSE @ASIGNAR END)
UPDATE PEDIMENTOS
SET SALIDAS = @ASIGNARTMP + ISNULL (SALIDAS,0)
WHERE PEDIMENTO = @PED AND ITEMCODE =@ITEMCODEOUT AND WHSCODE = @WHSCODEOUT
SET @ASIGNAR = @ASIGNAR - @ASIGNARTMP
UPDATE PEDIMENTOS
SET DISPONIBLE = STOCK + ISNULL(ENTRADAS,0) - ISNULL(SALIDAS,0)
INSERT FACTURAPEDIMENTO
VALUES (@list_of_cols_val_tab_del, @LINE,'60',@ITEMCODEOUT,@WHSCODEOUT,@ASIGNARTMP,@PED)
UPDATE IGE1
SET U_PEDIMENTO = @PED,
U_ADUANA = (SELECT TOP 1ADUANA FROM PEDIMENTOS WHERE PEDIMENTO = @PED),
U_FENTRADA = (SELECT TOP 1 FENTRADA FROM PEDIMENTOS WHERE PEDIMENTO = @PED)
WHERE DOCENTRY = @list_of_cols_val_tab_del AND ITEMCODE = @ITEMCODEOUT
END --END WHILE
FETCH NEXT FROM REC5
INTO @LINE, @ITEMCODEOUT, @QUANTITYOUT, @WHSCODEOUT
END
CLOSE REC5
DEALLOCATE REC5
UPDATE PEDIMENTOS
SET DISPONIBLE = STOCK + ISNULL(ENTRADAS,0) - ISNULL(SALIDAS,0)
END
Hola
Desconozco si ya has solucionado el problema, sin embargo, como recomendación, es siempre bueno tomar estos querys y descomponerlos en el Analizador de Consultas del SQL.
Esto te permitirá verificar en qué sección (por asi decirlo) del código es en donde esta el problema, que en este caso, claramente es un Select que está entregando más de un resultado
Saludos,
Edited by: Paul Ponce on Sep 27, 2009 7:13 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Revisa los otros selects que estas asignando a variables, te faltan por ahi quizas mas Select TOP 1
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
88 | |
7 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.