Oii, Alyson! Tudo bem?
Este exercício tem um próposito conceitual para que possamos compreender a lógica por trás da função descrita. Com isso em mente, não é essencial executar o comando, uma vez que sua execução requer inseri-lo no ambiente de testes, observando as regras de sintaxe e chamadas.
E enfatizo que o propósito da atividade não é executar o comando, mas sim saber qual é o objetivo da função UDF que está sendo apresentada na função mostrada como exemplo e em seguida escolher a alternativa correta.
Caso queira testar um código funcional que o retorno será 60, deixo o código abaixo:
CREATE TYPE dbo.TabelaValores AS TABLE (
valor INT
)
GO
CREATE FUNCTION dbo.SomaValores (@tabela AS dbo.TabelaValores READONLY)
RETURNS @resultado TABLE (soma INT)
AS
BEGIN
DECLARE @soma INT
SET @soma = 0
SELECT @soma = SUM(valor)
FROM @tabela
INSERT INTO @resultado (soma)
VALUES (@soma)
RETURN
END
GO
DECLARE @tabelaValores dbo.TabelaValores
INSERT INTO @tabelaValores (valor)
VALUES (10), (20), (30)
SELECT * FROM dbo.SomaValores(@tabelaValores)
No SQL Server, não é possível declarar uma tabela como tipo de parâmetro direto de uma função. Para contornar essa limitação, é necessário adotar uma abordagem alternativa, como o uso de uma tabela temporária ou uma variável de tabela. No código, foi utilizado a estratégia de criar o tipo dbo.TabelaValores
e, em seguida, passado esse tipo como parâmetro na função CREATE FUNCTION
, utilizando a cláusula RETURN AS TABLE
. Inclusive, essa abordagem foi demonstrada pelo instrutor em uma aula anterior e o restante do código segue o padrão visto na aula.
Espero ter ajudado. Qualquer dúvida, não hesite em recorrer ao fórum.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!