1
resposta

Dúvida exercio refazer da forma de entrada escalar para entrada por referência.

Olá,

Na criação da procedure abaixo, foi definido os valores da váriavéis

CREATE PROCEDURE BuscaNotasCliente
DECLARE @CPF AS VARCHAR(12) = '19290992743'
DECLARE @DATA_INICIAL AS DATETIME = '20160101'
DECLARE @DATA_FINAL AS DATETIME = '20161231'
AS
BEGIN
   SELECT * FROM [NOTAS FISCAIS] WHERE CPF = @CPF
   AND DATA >= @DATA_INICIAL AND DATA <= @DATA_FINAL
END;

EXEC BuscaNotasCliente '19290992743', '20160501'

É possível fazer essa mesma procedure sem definir valores para as variavéis usando o output, ou para fazer dessa forma, teria que ser a criação de uma função?

1 resposta

Oi, Vander, tudo bem?

Desculpe a demora em te responder!

Sim, é possível. Para isso, podemos alterar a declaração das variáveis para que elas recebam os valores por meio dos parâmetros de entrada da procedure. Ficaria assim:

CREATE PROCEDURE BuscaNotasCliente
    @CPF VARCHAR(12),
    @DATA_INICIAL DATETIME,
    @DATA_FINAL DATETIME
AS
BEGIN
   SELECT * FROM [NOTAS FISCAIS] WHERE CPF = @CPF
   AND DATA >= @DATA_INICIAL AND DATA <= @DATA_FINAL
END;

EXEC BuscaNotasCliente '19290992743', '20160101', '20161231'

Com o código acima, notamos que as variáveis são declaradas diretamente nos parâmetros da procedure e recebem diferentes valores dependendo dos dados informados na chamada da procedure.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar aqui no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!