使用从 SQL 服务器中的函数返回的 Table

Using Table returned from function in SQL Server

我有一个 SQL 服务器函数,其中 return 是一个 table。 table的结构是ID INTEGER,SortOrder INTEGER。

ALTER FUNCTION dbo.ParseStringByPipe(@InputList VARCHAR(8000) 
RETURNS @SortedList TABLE (ID INTEGER, SortOrder INTEGER))

我有一个存储过程 dbo.AdjustSortOrder 该存储过程接受一个参数@InputList VARCHAR(8000),该输入参数的值将是一个逗号分隔的数字列表,两个数字成对表示 ID以及该 ID 的新排序顺序。前任。 1,2,3,4(id 1排序顺序2,id 3排序顺序4)

在存储过程中,我正在调用该函数。然后我想从该函数中获取 return 值,并根据该函数编辑的值 return 更新 table。 returned 日期将如下所示:

ID                    SortOrder
-------------------------------
1                     5
2                     2
3                     7

我正在更新一个名为 dbo.Orders 的 table,设置 sortorder 字段 = 排序顺序,其中 id = return table 中的 id。如果我错了,请纠正我,但我相信最好的方法是使用内部连接进行更新,即

UPDATE 
    dbo.Orders 
SET 
    Orders.SortOrder = rt.SortOrder 
FROM 
    dbo.Orders ot 
INNER JOIN 
    SortedList sl
ON
    ot.ID = sl.ID

我的第一个问题是如何在存储过程中使用函数中的 return 值,第二个问题是内部联接是否是完成手头任务的最有效方法?预先感谢您的所有帮助。

您实际上只是在函数中使用 sub 并将其视为 table。一般需要加"dbo"前缀。

INNER JOIN dbo.SortedList(@InputList) sl ON ot.ID = sl.ID