У меня есть функции SQL Server, которые возвращают таблицу. Структура таблицы - ID INTEGER, SortOrder INTEGER.Использование таблицы, возвращаемой из функции в SQL Server
ALTER FUNCTION dbo.ParseStringByPipe(@InputList VARCHAR(8000)
RETURNS @SortedList TABLE (ID INTEGER, SortOrder INTEGER))
Я хранимая процедура dbo.AdjustSortOrder хранимая процедура принимает в качестве параметра @InputList УАКСНАК (8000) значение этого параметра входного будет списком разделенной запятой числа в двух парах, которые представляют собой идентификатор и новый порядок сортировки этого идентификатора. ех. 1,2,3,4 (идентификатор 1 порядок сортировки 2, идентификатор 3 порядок сортировки 4)
внутри хранимой процедуры, я делаю вызов функции. Затем я хочу взять возвращаемые значения из этой функции и обновить таблицу на основе значений, возвращаемых функцией. Дата возвращается будет выглядеть следующим образом:
ID SortOrder
-------------------------------
1 5
2 2
3 7
Я обновляю таблицу с именем dbo.Orders настройки поля SortOrder = порядок сортировки, где идентификатор = идентификатор в возвратном таблице. Пожалуйста, поправьте меня, если я ошибаюсь, но я считаю, что лучший способ сделать это будет обновление с внутренним соединением т.е.
UPDATE
dbo.Orders
SET
Orders.SortOrder = rt.SortOrder
FROM
dbo.Orders ot
INNER JOIN
SortedList sl
ON
ot.ID = sl.ID
Первый вопрос у меня есть, как я могу использовать значения возврата из функции внутри хранимая процедура, второй вопрос заключается в том, является ли внутреннее соединение наиболее эффективным способом выполнения поставленной задачи? Заранее благодарю вас за вашу помощь.
спасибо, я думаю, я был путь над усложняя его в моем сознании. – SSISPissesMeOff