Sql server 2008 在表值函数中使用临时表
我试图在表值函数中使用临时表,但似乎不行。在表值函数中使用临时表还有其他方法吗 当前代码:Sql server 2008 在表值函数中使用临时表,sql-server-2008,tsql,function,temp-tables,Sql Server 2008,Tsql,Function,Temp Tables,我试图在表值函数中使用临时表,但似乎不行。在表值函数中使用临时表还有其他方法吗 当前代码: CREATE FUNCTION dbo.fnt_AllChildren (@ParentName VARCHAR(255)) RETURNS @return_variable TABLE ( Id INT, Name VARCHAR(255), ParentId INT, ParentName VARCHAR(255)
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
你可以用一个字母代替
没有
不过,您可以使用@table_变量
。尽管快速浏览一下,a可能比使用这些子/父表更适合您
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))