Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Estou com a seguinte dúvida:
Na criação de minha procedure, os parâmetros de Data Inicial e Final não podem vir nulos. Eu criei a verificação abaixo para isso:
" IF @DT_INICIAL AND @DT_FINAL IS NULL BEGIN RAISERROR('ERRO = DATA INICIAL E FINAL NAO INFORMADAS.',1,1) END; "
Porém, ao meu ver, é uma verificação desnecessária, ou seja, se eu criar os parâmetros @DT_INICIAL e @DT_FINAL como NOT NULL, o próprio SQL irá retornar o erro dizendo que o parâmetro é obrigatório.
Mas, não sei como realizar a criação desses parâmetros como NOT NULL, ao realizar o código abaixo, o SQL retorna o erro (também abaixo):
(
DECLARE @DT_INICIAL DATE NOT NULL,
DECLARE @DT_FINAL DATE NOT NULL
)
Retorno do SQL:
Msg 11555, Level 15, State 1, Procedure PRC_MTCORP_MODU_ABAS_BOBI_QUAL_CONS, Line 29
O parâmetro '@DATA_INICIAL' foi declarado como NOT NULL. Os parâmetros NOT NULL têm suporte apenas com procedimentos armazenados compilados de forma nativa.
Pergunta:
Existe meios de se criar o parâmetro como NOT NULL?
Detalhe:
Criando o parâmetro sem nenhuma informação, ou seja, DECLARE "@DT_INICIAL DATE", na execução o SQL aceita o parâmetro como NULL, sendo necessária minha verificação inicial.
Abraço.
Quando você cria uma procedure os parametros podem ser obrigatórios ou não
Porém, NULL também é um valor! e neste caso você tem que tratar dentro da procedure.
No seu caso, altere o RAISERROR deste modo:
RAISERROR(15600, -1,-1,'ERRO = DATA INICIAL E FINAL NAO INFORMADAS.')
Olhe um exemplo:
if exists (select 1 from sys.procedures where name = 'teste_data')
drop procedure teste_data
go
create procedure teste_data (@dt_incio datetime , @dt_fim datetime)
as
begin
if @dt_incio is null or @dt_fim is null
RAISERROR(15600, -1,-1,'ERRO = DATA INICIAL E FINAL NAO INFORMADAS.')
select @dt_incio, @dt_fim
end
Mensagem de erro: