代码之家  ›  专栏  ›  技术社区  ›  So_oP

从SP访问由表值函数返回的表

  •  1
  • So_oP  · 技术社区  · 8 年前

    我有表值函数

    ALTER FUNCTION [dbo].[fn_Functiont]()
    RETURNS TABLE 
    AS
    RETURN 
    (   
    SELECT d.*, b.Name AS Name, ps.Name AS PaymentSystemName, c.UserName AS UserName, c.FirstName AS ClientFirstName, c.LastName AS LastName, c.Number AS DocumentNumber, c.Id
    FROM Document AS d
    JOIN System AS ps ON d.SystemId = ps.Id
    JOIN Client AS c ON c.Id = d.ClientId
    LEFT JOIN Shop AS b ON b.Id = d.ShopId
    WHERE d.OperationTypeId IN (2, 4, 5) AND c.Type = 1
    )
    

    在这个SP中,我声明了如下的临时表

    DECLARE @tempTable AS TABLE 
    (
       .. columns here ...
    )
    

    声明后,我只是插入信息

    INSERT INTO @tempTable
    SELECT * FROM [dbo].[fn_Functiont]()
    Select @column1,colum2...,from @tempTable
    

    问题是我必须在@tentable中声明很多列,代码看起来很难看。那么,有没有更好的方法从表值函数读取SP中的行呢?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jayasurya Satheesh    8 年前

    而不是表变量 @tempTable 使用临时表并尝试此操作

    SELECT * INTO #tempTable FROM [dbo].[fn_Functiont]()