Результат хранимой процедуры в таблицу, без создания таблицы вручную в SQL Server - PullRequest
1 голос
/ 26 января 2010

Что мне нужно сделать, это поместить результаты хранимой процедуры (с большим количеством параметров) в таблицу. Примерно так:

SELECT * INTO Table_1 FROM
(
EXEC [MY_DataBase].[dbo].[GET_Report] '%%', '%%', '%%', 'x', 'x', 'x', 'x', 'x', 'x' ....
) X

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

Ответы [ 3 ]

4 голосов
/ 26 января 2010

Вы не можете использовать хранимую процедуру внутри оператора SELECT, например, это означает, что вы не можете создать целевую таблицу встроенной в точке выполнения, используя sproc.

Вам либо нужно:

1) сначала создайте Table_1 с правильной схемой, а затем выполните:
INSERT Table_1 (fieldlist) EXECUTE YourSproc....

2) переписать sproc как не определенную функцию и использовать ее в операторе SELECT INTO:

SELECT *
INTO Table_1
FROM dbo.YourFunction(same params as sproc...) x
1 голос
/ 26 января 2010

Вы можете сделать это, если измените хранимую процедуру на пользовательскую функцию.

0 голосов
/ 27 января 2010

Вы можете попробовать это решение, оно включает в себя: включение специальных запросов, использование SELECT..INTO для создания временной таблицы и использование OPENROWSET

-- you will need to enable Ad Hoc Remote Queries
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE 
GO

-- this assumes trusted connection
SELECT tmp.*
INTO #mytemptable
FROM OPENROWSET ('SQLOLEDB',
     'Server=SQLVM\SQL01;TRUSTED_CONNECTION=YES;Database=pubs',
     'EXEC sp_who') tmp

-- select from your temporary table
SELECT *
FROM #mytemptable
...