2014-02-04 3 views
0

Я хочу вставить данные в таблицу, используя инструкцию select и процедуры выполнения.Вставьте данные в таблицу с помощью процедуры select & execute

То есть ... предположим, что таблица «TEMP» имеет 4 столбца A, B, C, D. A & Значения столбцов B будут поступать из инструкции SELECT, а значения столбца C, D будут выполняться путем выполнения любых хранимых процедур.

Я пробовал следовать, но не сталкивался с ошибкой.

INSERT INTO TEMP 
SELECT R1.A, R1.B, R2.C, R2.D FROM 
(SELECT A , B FROM SOME_TABLE) AS R1 
CROSS JOIN EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1) AS R2 

Ошибка:

Incorrect syntax near the keyword 'exec' 
+0

@Aquillo SRY. это R2. – Dhwani

+0

У нас есть аналогичный вопрос. Попробуйте это: [Как совместить хранимую процедуру и выберите результат запроса] [1] [1]: http://stackoverflow.com/questions/11503067/how-to -combine-stored-procedure-and-select-query-result –

ответ

0

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

-- First create the table to which we want to push the SP result 
CREATE TABLE #TempTableName(..........) 

-- Insert result from the SP to temp table 
INSERT INTO #TempTableName 
EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1 

Затем сделать соединяющую

INSERT INTO TEMP 
SELECT R1.A, R1.B, R2.C, R2.D FROM 
(SELECT A , B FROM SOME_TABLE) AS R1 
CROSS JOIN #TempTableName AS R2 
1

проверить это ...

declare @var int 

    exec EXEC [dbo].[SOME_PROCEDURE] @SOME_VARIABLE1,@[email protected] 


    INSERT INTO TEMP 
    SELECT R1.A, R1.B, R2.C, R2.D FROM 
    (SELECT A , B FROM SOME_TABLE) AS R1 
    CROSS JOIN @var) AS R2 
+0

YOU означает, что я должен возвращать переменную вывода? – Dhwani

+0

да, вы должны возвращать переменную выходного значения в sp ... – pankeel

Смежные вопросы