Tenho uma função que atualmente usa 3 parâmetros:
CREATE FUNCTION dbo.RatesReport (@StartTapeDate DATE, @StartFcbVersionId int, @StartSvbVersionId int)
SELECT *
FROM dbo.DataTapes t
WHERE t.TapeDate = @StartTapeDate AND t.VersionId IN(@StartFcbVersionId, @StartSvbVersionId)
Gostaria de adicionar um parâmetro adicional (@LoanType int) que bifurque ainda mais os dados, mas ele precisaria ser derivado.
CASE WHEN t.SecId LIKE 'CD_%' THEN 1 ELSE 2
Para que minha nova consulta/função fique mais ou menos assim:
CREATE FUNCTION dbo.RatesReport (@StartTapeDate DATE, @StartFcbVersionId int, @StartSvbVersionId int, @DataType int)
SELECT *
FROM dbo.DataTapes t
WHERE t.TapeDate = @StartTapeDate AND t.VersionId IN(@StartFcbVersionId, @StartSvbVersionId) and t.SecId = @LoanType
Se entendi corretamente o que você está dizendo, por que você não pode simplesmente escrever essa expressão no corpo da sua função assim?
Não é a solução de melhor desempenho, mas provavelmente é o menor dos seus problemas se você planeja usar uma
SELECT *
função de tabela com valores de múltiplas instruções , ambas prejudicando o desempenho. (É difícil dizer que tipo de função você está tentando escrever com o código de exemplo fornecido, pois falta a sintaxe necessária.)