Набор результатов SQL Server в выходные параметры?

#sql-server-2008

#sql-server-2008

Вопрос:

У меня был sproc, который выполнял оператор select, результатом был один столбец и одна строка, которые я присвоил выходному параметру.

Теперь sproc должен увеличиться, чтобы вернуть два столбца из набора результатов с одной строкой.

Каков самый чистый способ сохранить единый выбор (просто заставить его возвращать два столбца вместо одного) и присвоить два значения строк отдельным (выходным) переменным?

Спасибо.

Ответ №1:

Вы можете просто объявить 2 output параметра и назначить обоим из одного и того же select

select @foo = foo, @bar=bar ...

Ответ №2:

Если вы ищете возвращаемое значение, которое не является скалярным (т. Е. Набор данных), То вы действительно не сможете использовать хранимую процедуру. Табличная переменная может находиться READONLY в хранимой процедуре.

Я бы рекомендовал преобразовать логику вашей хранимой процедуры в табличную функцию. Это будет нормально, если вы не выполняете никаких инструкций DML внутри функции. Но, согласно вашему описанию, похоже, что это просто SELECT .

Кроме того, преимущество функции в том, что ее можно запрашивать в строке.