cancel
Showing results for 
Search instead for 
Did you mean: 

SQL Microsoft] [SQL Native client][SQL Server]Subquery returned more than 1

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

Answers (1)

Answers (1)

former_member188440
Active Contributor
0 Kudos

Revisa los otros selects que estas asignando a variables, te faltan por ahi quizas mas Select TOP 1