Subquery returned more than 1 value.This is not allowed when the subquery follows =,! = , = , = or when the subquery is used as an expression

0
ALTER procedure [dbo].[GuardarTicketCombustible]
@Proveedor varchar(300),
@CentroCostos varchar(40),
@Departamento varchar(40),
@ConceptoGasto varchar(40),
@ProductoGasto varchar(40),
@Vehiculo varchar(40),
@PeriodoAcomodo varchar(300),
@Moneda varchar(10),
@FechaVale date ,
@FolioVale varchar(30),
@FolioTicket varchar(30),
@Litros decimal(18,2),
@CostoLitro decimal(18,2),
@ImporteTotal decimal(18,2),
@Proyecto varchar(40),
@SubProyecto varchar(40)
as
    declare @msg varchar(max)
    declare @msg2 varchar(max)
    declare @IdProveedor bigint 
    declare @IdCentroCosto bigint 
    declare @IdDepartamento bigint 
    declare @IdConceptoGasto bigint 
    declare @IdProductoGasto bigint 
    declare @IdVehiculo bigint 

    --------TicketConProyecto
    declare @TicketCombustible bigint   
    declare @IdProyecto bigint  
    declare @IdSubProyecto bigint 
        begin try
            begin tran              
                set @IdProveedor = (select IdProveedor from Proveedores where CONCAT(NombreCompleto,' ',ApellidoPaterno,' ',ApellidoMaterno)  = @Proveedor)
                set @IdCentroCosto = (select IdCentro from CentrosCostos where NombreCentroCosto = @CentroCostos)
                set @IdDepartamento =  (select IdDepartamento from Departamento where NombreDepartamento = @Departamento)
                set @IdConceptoGasto = (select IdConceptoGeneral from ConceptoGeneral where NombreConceptoGeneral = @ConceptoGasto)
                set @IdProductoGasto = (select IdProductoInsumo from ProductoInsumos where Descripcion = @ProductoGasto)
                set @IdVehiculo =  (select IdVehiculo from Vehiculos where Placas = @Vehiculo)

                    insert into TicketCombustibles (IdProveedor, IdCentroCosto, IdDepartamento, IdConceptoGasto, IdProductoGasto,IdVehiculo,
                    PeriodoAcomodo, Moneda, FechaVale, FolioVale, FolioTicket,Litros,CostoLitro,ImporteTotal, Estatus)
                    values(@IdProveedor,@IdCentroCosto,@IdDepartamento,@IdConceptoGasto,@IdProductoGasto,@IdVehiculo, @PeriodoAcomodo, @Moneda,@FechaVale,@FolioVale,
                    @FolioTicket, @Litros,@CostoLitro,@ImporteTotal, 'Pendiente')


                        if(@Proyecto != '')
                            begin 
                                set @IdProyecto = (select IdProyecto from Proyecto where NombreProyecto = @Proyecto )   
                                --select @IdProyecto                    
                                    insert into [TicketConProyecto] (IdTicketCombustible,IdProyecto)
                                    values (SCOPE_IDENTITY(), @IdProyecto)

I get an error on line 56 but I think it's because of this subquery

                                declare @SUMA decimal(18,2);
                                declare @Valor decimal(18,2);
                                set @SUMA = (select sum(ImporteTotal) AS SUMA from TicketCombustibles join TicketConProyecto on TicketConProyecto.IdTicketCombustible = TicketCombustibles.IdTicketCombustible WHERE IdProyecto = @IdProyecto group by ImporteTotal )
                                set @Valor =  (SELECT SUM (Presupuesto + Margen )AS Total FROM Proyecto  where IdProyecto = @IdProyecto)

                                if(@SUMA <= @Valor)
                                begin

                                update Proyecto set Pagado=@SUMA where IdProyecto=@IdProyecto
                            set @msg2 = 'Actualización de Proyecto'     
                                select @msg2 as MSG2    

                                end

                                declare @scopProyecto bigint 
                                set @scopProyecto = SCOPE_IDENTITY()
                                select @scopProyecto
                            end 
                            else

                            set @msg2 = 'El valor Excede del Presupuesto'   
                            select @msg2 as MSG2


                                if (@SubProyecto != '')
                                    begin
                                        set @IdSubProyecto = (select IdSubProyecto from SubProyecto where NombreSubProyecto = @SubProyecto) 
                                        --select @IdSubProyecto
                                        update TicketConProyecto set IdSubProyecto = @IdSubProyecto where IdTicketConProyecto = @scopProyecto
                                    end 



                    set @msg = 'Guardado con Exito'
                    select @msg as MSG


            commit 
        end try
        begin catch
                rollback
                SELECT ERROR_NUMBER() AS ErrorNumber ,ERROR_SEVERITY() AS ErrorSeverity ,ERROR_STATE() AS ErrorState  ,ERROR_PROCEDURE() AS ErrorProcedure
            ,ERROR_LINE() AS ErrorLine ,ERROR_MESSAGE() AS ErrorMessage;
        end catch
    
asked by Julio Vásquez Díaz 29.11.2018 в 02:23
source

0 answers