none
Parametros RRS feed

  • Pergunta

  • Ola pessoal
    Estou com a seguinte duvida tenho esta proc e passa alguns parametros, so que minha duvida e seguinte

    havera situações que irei filtrar desta forma

    codigo_inicial = 100 | codigo_final = 1000
    Dta_inicio = 10-10-2004 a  SEM VALOR
    neste caso tenho que recuperar todos os registro apartir da data inicial para a maior data

    e alguns casos

    o filtro ficar sem parametros e retornar todos os registro

    fico no aguardo
    e obrigado

    abaixo estaa proc que funciona mas com todos os parametros declarados




    ALTER PROCEDURE [dbo].[rel_proxCalib_inst]
          -- Add the parameters for the stored procedure here
          @codigo_inicial varchar(25),
          @codigo_final varchar(25),
          @status varchar(25),
          @DTA_INICIO datetime,
          @DTA_FINAL datetime
    AS
    BEGIN
          -- SET NOCOUNT ON added to prevent extra result sets from
          -- interfering with SELECT statements.
          SET NOCOUNT ON;

        -- Insert statements for procedure here
         
         SELECT inst.codigo,
                   inst.descricao,
                   inst.status_calibracao,
                   inst.calibracao,
                   inst.IDcliente,
                   calib.proxima_calibracao
          FROM tb_calibracao_intrumento as calib
          INNER JOIN tb_instrumento as inst
          on calib.codigo_instrumento = inst.codigo and calib.proxima_calibracao between @dta_inicio and @dta_final
          where inst.codigo between @codigo_inicial and @codigo_final AND inst.status_calibracao = @status 
                      
    END
    GO
    segunda-feira, 16 de junho de 2008 20:14

Respostas

  • Olá,

     

    Nesse caso pode ser necessário montar um SQL dinâmico (ou aninhar os IFs). Ex:

     

    Code Snippet

    If @par1 IS NOT NULL

    BEGIN

    SELECT AlgumaCoisa

    END

     

    If @par2 and @par1 IS NOT NULL

    BEGIN

    SELECT OutraCoisa

    END

     

     

    Ou

     

    Code Snippet

    DECLARE @cmdSQL NVARCHAR(2000)

    SET @cmdSQL = 'SELECT AlgumaCoisa FROM AlgumaTabela'

     

    -- Vários IFs para montar o WHERE

    exec sp_executesql @statement = @cmdSQL

     

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 16 de junho de 2008 20:23