Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在表值函数中使用临时表_Sql Server 2008_Tsql_Function_Temp Tables - Fatal编程技术网

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))