Quero passar uma variável de tabela para uma função (que conteria valor diferente em momentos diferentes) como entrada, retornando um resultado calculado na forma de outra tabela, que seria declarada na função.
Algo assim:
CREATE FUNCTION fn_CalculateListing(@ListingData TABLE(ROWID INT,value1 INT, value2 INT))
RETURNS TABLE
AS
BEGIN
DECLARE @result TABLE
(
result1 INT,
result2 INT
)
INSERT INTO @result(result1,result2)
SELECT value1*value2, value1/value2
FROM ListingDate
RETURN @result
END
Mas a sintaxe acima me dá um erro perto da declaração @ListingDate TABLE
como sintaxe incorreta.
A sintaxe acima está correta ou devo usar outra?
Você não pode incluir uma declaração de tabela na declaração do procedimento armazenado. Se você realmente deseja passar linhas de dados, crie um tipo de parâmetro com valor de tabela e use-o em seu procedimento armazenado.
Que tal uma função com valor de tabela mais simples, que calcula o produto e o quociente de 2 números inteiros:
Certifique-se de usar uma função definida pelo usuário em linha . Dessa forma, o otimizador de plano pode paralelizar seu plano (se você tiver vários núcleos) e obterá um desempenho muito melhor.
Você pode usar esta função da seguinte forma: