【发布时间】:2015-02-02 21:37:19
【问题描述】:
我有一个返回表的 SQL Server 函数。表的结构是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)
在存储过程中,我正在调用该函数。然后我想从该函数获取返回值并根据函数返回的值更新表。返回的日期将如下所示:
ID SortOrder
-------------------------------
1 5
2 2
3 7
我正在更新一个名为 dbo.Orders 的表,设置 sortorder 字段 = 排序顺序,其中 id = 返回表中的 id。如果我错了,请纠正我,但我相信最好的方法是使用内部连接进行更新,即
UPDATE
dbo.Orders
SET
Orders.SortOrder = rt.SortOrder
FROM
dbo.Orders ot
INNER JOIN
SortedList sl
ON
ot.ID = sl.ID
我遇到的第一个问题是如何使用存储过程内部函数的返回值,第二个问题是内部连接是完成手头任务的最有效方式吗?提前感谢您的所有帮助。
【问题讨论】:
标签: sql-server tsql stored-procedures user-defined-functions