使用从 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
我有一个 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