#sql-server-2008
#sql-server-2008
Вопрос:
У меня был sproc, который выполнял оператор select, результатом был один столбец и одна строка, которые я присвоил выходному параметру.
Теперь sproc должен увеличиться, чтобы вернуть два столбца из набора результатов с одной строкой.
Каков самый чистый способ сохранить единый выбор (просто заставить его возвращать два столбца вместо одного) и присвоить два значения строк отдельным (выходным) переменным?
Спасибо.
Ответ №1:
Вы можете просто объявить 2 output
параметра и назначить обоим из одного и того же select
select @foo = foo, @bar=bar ...
Ответ №2:
Если вы ищете возвращаемое значение, которое не является скалярным (т. Е. Набор данных), То вы действительно не сможете использовать хранимую процедуру. Табличная переменная может находиться READONLY
в хранимой процедуре.
Я бы рекомендовал преобразовать логику вашей хранимой процедуры в табличную функцию. Это будет нормально, если вы не выполняете никаких инструкций DML внутри функции. Но, согласно вашему описанию, похоже, что это просто SELECT
.
Кроме того, преимущество функции в том, что ее можно запрашивать в строке.