У меня есть хранимая процедура в SQL Server 2005. Она возвращает три переменные в одной строке, как в этом (очень упрощенном) примере:
CREATE PROCEDURE proc1
AS
DECLARE @col1 VARCHAR(4)
DECLARE @col2 VARCHAR(4)
DECLARE @col3 VARCHAR(4)
SET @col1 = 'val1'
SET @col2 = 'val2'
SET @col3 = 'val3'
SELECT @col1 col1, @col2 col2, @col3 col3
GO
Во внешнем приложении мне нужно выполнить хранимую процедуру и обработать одно из трех значений. Из-за ограничений в этом приложении, он всегда будет использовать только самый первый столбец.
Итак, я ищу способ ограничить набор результатов процедуры одним столбцом или изменить порядок столбцов.
IIRC MySQL поддерживает подзапросы, подобные следующим, но SQL Server - нет:
SELECT col1 FROM (EXEC proc1)
Я знаю, что могу использовать временную таблицу (или переменную таблицы) для буферизации результата, а затем выбрать один столбец, но я надеюсь, что есть более «сжатый» способ, чем этот:
CREATE TABLE #tmp (col1 VARCHAR(4) NOT NULL, col2 VARCHAR(4) NOT NULL, col3 VARCHAR(4) NOT NULL)
INSERT INTO #tmp EXEC proc1
SELECT col2 FROM #tmp
DROP TABLE #tmp
Заранее спасибо за любые подсказки, которые вы можете дать,
Patrick