Выберите столбец, возвращаемый хранимой процедурой - PullRequest
3 голосов
/ 17 мая 2010

У меня есть хранимая процедура, которая возвращает мне около 50 столбцов. Я хочу написать запрос, в котором я смогу выбрать определенный столбец из списка столбцов, возвращаемых SP.

Я пытался написать select RSA_ID from exec(uspRisksEditSelect '1') Но это выдает мне ошибку. Я думаю, что нам нужно написать динамический SQL для этого. Но я новичок в этом.

Ответы [ 3 ]

6 голосов
/ 17 мая 2010

Вы не можете напрямую использовать результаты сохраненного процесса - вам нужно сохранить его в оперативной или временной таблице и перейти оттуда:

DECLARE @tableVar TABLE (ID INT, Name VARCHAR(50))  -- whatever your sp returns

INSERT INTO @tableVar
    EXEC uspRisksEditSelect '1'

SELECT RSA_ID FROM @tableVar

Но определенно нет необходимости использовать динамический SQL .....

3 голосов
/ 17 мая 2010

Вы должны написать табличную пользовательскую функцию.

0 голосов
/ 31 января 2015

Если вы можете изменить свою хранимую процедуру, вы можете легко указать количество необходимых столбцов в качестве параметра:

CREATE PROCEDURE sp_GetDiffDataExample
      @columnsStatement NVARCHAR(MAX) -- Needed columns
AS
BEGIN
    DECLARE @query NVARCHAR(MAX)
    SET @query = N'SELECT ' + @columnsStatement + N' INTO ##TempTable FROM dbo.TestTable'
    EXEC sp_executeSql @query
    SELECT * FROM ##TempTable
    DROP TABLE ##TempTable
END

В этом случае вам не нужно создавать временную таблицу вручную - она ​​создается автоматически. Надеюсь, это поможет.

...