sql server 2008 - tipo - Usar una tabla temporal en una tabla de funciones con valores
tablas temporales en funciones sql server (2)
Estoy tratando de usar una tabla temporal en una función con valores de tabla, pero parece que no puedo. ¿Hay alguna otra forma en que pueda usar una tabla temporal en una función con valores de tabla?
CÓDIGO ACTUAL:
CREATE FUNCTION dbo.fnt_AllChildren (#ParentName VARCHAR(255))
RETURNS @return_variable TABLE
(
Id INT,
Name VARCHAR(255),
ParentId INT,
ParentName VARCHAR(255)
)
AS
BEGIN
CREATE TABLE #Child (Id INT, Name VARCHAR(255), ParentId INT, ParentName VARCHAR(255))
CREATE TABLE #Parent (Id INT, Name VARCHAR(255), ParentId INT, ParentName VARCHAR(255))
INSERT #Child (Id, Name, ParentId, ParentName)
SELECT child.Id, child.Name, child.ParentId, parent.Name
FROM dbo.t_mytable child
INNER JOIN dbo.t_mytable parent ON child.ParentId = parent.Id
WHERE parent.Name = #ParentName
WHILE (@@ROWCOUNT > 0)
BEGIN
INSERT INTO @return_variable
SELECT * FROM #Child
DELETE FROM#Parent
INSERT INTO #Parent
SELECT * FROM #Child
DELETE FROM #Child
INSERT INTO #Child (Id, Name, ParentId, ParentName)
SELECT child.Id, child.Name, child.ParentId, parent.Name
FROM dbo.t_mytable child
INNER JOIN #Parent parent ON child.ParentId = parent.Id
END
RETURN
END
GO
No.
Puedes usar @table_variables
sin embargo. Aunque a simple vista, quizás un CTE recursivo podría funcionar para usted en lugar de usar estas tablas hijo / padre.
Puede utilizar una variable de tabla en su lugar.
DECLARE @Child TABLE (Id INT, Name VARCHAR(255), ParentId INT, ParentName VARCHAR(255))
DECLARE @Parent TABLE (Id INT, Name VARCHAR(255), ParentId INT, ParentName VARCHAR(255))