0

У меня есть функции 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 

Первый вопрос у меня есть, как я могу использовать значения возврата из функции внутри хранимая процедура, второй вопрос заключается в том, является ли внутреннее соединение наиболее эффективным способом выполнения поставленной задачи? Заранее благодарю вас за вашу помощь.

ответ

1

Вы буквально просто подчиняетесь функции и относитесь к ней как к таблице. Вам нужно прикрепить его к «dbo» вообще.

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

+0

спасибо, я думаю, я был путь над усложняя его в моем сознании. – SSISPissesMeOff

Смежные вопросы