SQL Server 2008: Um UDF de várias declarações pode retornar um UDT? [duplicado
Pergunta
Esta pergunta já tem uma resposta aqui:
É possível que um UDF de várias estatatos retorne um tipo de tabela definido pelo usuário, em vez de uma tabela que é definida dentro de seu parâmetro de retorno?
Então, em vez de:
CREATE FUNCTION MyFunc
(
@p1 int, @p2 char
)
RETURNS
@SomeVar TABLE
(
c1 int
)
AS
Eu gostaria de fazer:
CREATE FUNCTION MyFunc
(
@p1 int, @p2 char
)
RETURNS
@SomeVar MyTableType
AS
A razão para isso é que, dentro da minha função, chamo outras funções e tenho que passar no MyTableType UDT, mesmo que eu definir exatamente a mesma definição de tabela no tipo de tabela de retorno, ele lançará um erro de confronto do operando.
Solução
O melhor que eu poderia criar foi declarar uma variável de tabela do seu tipo local para a função e usá -la em todo o seu código. Em seguida, faça uma inserção ... selecione na tabela de parâmetros imediatamente antes da instrução Return.
Eu evitei tipos definidos pelo usuário até agora. Embora pareçam promissores, com a capacidade de alterar o tipo em um local, em vez de alterar os tipos de dados em todos os lugares, eles nunca parecem entregar quando se trata de produtividade e manutenção por causa de problemas como esses.