none
Criação de Prodecures RRS feed

  • Pergunta

  • Boa noite Pessoal

    Eu estou criando uma procedure, porém, estou com alguns problemas.

    Nas condições Ex; nessa condição eu quero dizer o seguinte: Se for informado algum valor no Campo Placa_Veiculo então ele tem

    que ser igual ao do Banco. se não for informado nada nesse campo, então ele tem que pegar todas as placas que

    estão no banco. Está certa a forma que eu estou fazendo?

    DROP PROCEDURE	ACUMULADOSITENS_PESQUISA_FILIALORIGEMFILIALDESTINOSERIEROMANEIONUMEROROMANEIODATAROMANEIOCPFMOTORISTAPLACAVEICULO
    GO
    CREATE PROCEDURE ACUMULADOSITENS_PESQUISA_FILIALORIGEMFILIALDESTINOSERIEROMANEIONUMEROROMANEIODATAROMANEIOCPFMOTORISTAPLACAVEICULO(
    	@Filial_Origem			INT,
    	@Filial_Destino			INT,
    	@Serie_Romaneio			NCHAR(3),
    	@NumeroRomaneioInicial	INT,
    	@NumeroRomaneioFinal	INT,
    	@DataRomaneioInicial	DATETIME,
    	@DataRomaneioFinal		DATETIME,
    	@Cpf_Motorista			NVARCHAR(11),
    	@Placa_Veiculo			NVARCHAR(8)
    )
    AS 
    	BEGIN	
    			SELECT	AI.Codigo_Produto, P.Descricao_Produto, AI.Volumes_Produto, AI.Peso_Produto, AI.Valor_Produto
    			from tbAcumuladosItens as AI
    			inner join tbFiliais as F1 on F1.Cod_Filial = AI.Filial_Origem
    			inner join tbFiliais as F2 on F2.Cod_Filial = AI.Filial_Destino
    			inner join tbProdutos as P on P.Codigo_Produto = AI.Codigo_Produto
    			WHERE	(AI.Filial_Origem = @Filial_Origem OR AI.Filial_Origem = 0) 
    					AND (AI.Filial_Destino = @Filial_Destino OR AI.Filial_Destino = 0)	
    					AND (AI.Serie_Romaneio = @Serie_Romaneio OR AI.Serie_Romaneio = '')
    					AND ( AI.Numero_Romaneio between @NumeroRomaneioInicial AND @NumeroRomaneioFinal)
    					AND ( AI.Data_Romaneio between @DataRomaneioInicial AND @DataRomaneioFinal)
    					AND ( AI.Cpf_Motorista = @Cpf_Motorista OR AI.Cpf_Motorista = '')
    					AND ( AI.Placa_Veiculo = @Placa_Veiculo OR AI.Placa_Veiculo = '')
    	END
    GO
    

    AND ( AI.Placa_Veiculo = @Placa_Veiculo OR AI.Placa_Veiculo = '')

     
    domingo, 9 de outubro de 2016 01:48

Respostas

  • Você pode usar:
    AND ( AI.Placa_Veiculo LIKE %@Placa_Veiculo%)

    Ou ficaria ate melhor na sua procedure você faria um teste antes da clausula AND que contem a placa
    IF(@Placa_Veiculo <> '')
    BEGIN
       AND AL.PLACA_VEICULO = @PLACA_VEICULO
    END

    Não sei se a sintxe acima esta OK pois faz tempo que não mexo com SQLSERVER, mas espero ter ajudado


    Junior

    domingo, 9 de outubro de 2016 11:14

Todas as Respostas

  • Você pode usar:
    AND ( AI.Placa_Veiculo LIKE %@Placa_Veiculo%)

    Ou ficaria ate melhor na sua procedure você faria um teste antes da clausula AND que contem a placa
    IF(@Placa_Veiculo <> '')
    BEGIN
       AND AL.PLACA_VEICULO = @PLACA_VEICULO
    END

    Não sei se a sintxe acima esta OK pois faz tempo que não mexo com SQLSERVER, mas espero ter ajudado


    Junior

    domingo, 9 de outubro de 2016 11:14
  • Deleted
    domingo, 9 de outubro de 2016 13:27
  • Se for informado algum valor no Campo Placa_Veiculo então ele tem que ser igual ao do Banco.

    se não for informado nada nesse campo, então ele tem que pegar todas as placas que estão no banco.

    Acredito que essas duas formas resolvem

    AND ( AI.Placa_Veiculo = @Placa_Veiculo OR AI.Placa_Veiculo = AI.Placa_Veiculo )
    
    AND ( AI.Placa_Veiculo = @Placa_Veiculo OR AI.Placa_Veiculo is not null )


    Wesley Neves

    segunda-feira, 10 de outubro de 2016 11:34