Вставьте хранимую процедуру плюс статическое значение - PullRequest
0 голосов
/ 24 мая 2018

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

Вот где я сейчас нахожусь:

CREATE TABLE #table (
STATIC              INT, --STATIC NUMBER
SP1                 INT, --STORED PROCEDURE COL 1
SP2                 INT, --STORED PROCEDURE COL 2
SP3                 INT, --STORED PROCEDURE COL 3
);

INSERT INTO #table values('1'), EXEC stored_procedure 'param_1', 'param_2';
INSERT INTO #table values('2'), EXEC stored_procedure 'param_3', 'param_4';

Любые предложения будут великолепны!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вставить во временную таблицу и затем присоединиться:

CREATE TABLE #sp (
SpKey               INT IDENTITY(1,1) NOT NULL, --use for join
SP1                 INT, --STORED PROCEDURE COL 1
SP2                 INT, --STORED PROCEDURE COL 2
SP3                 INT, --STORED PROCEDURE COL 3
);

CREATE TABLE #static (
StaticKey           INT IDENTITY(1,1) NOT NULL, --use for join
Value               INT
);

INSERT INTO #sp EXEC stored_procedure 'param_1', 'param_2'
INSERT INTO #static VALUES (1)

INSERT INTO #sp EXEC stored_procedure 'param_3', 'param_4'
INSERT INTO #static VALUES (2)

SELECT * INTO #table
FROM
(
SELECT *
FROM #static
INNER JOIN #sp ON #static.StaticKey = #sp.SpKey) sub
0 голосов
/ 24 мая 2018

Вы не можете сделать это так, как вы хотите, но вы можете INSERT, UPDATE, INSERT, UPDATE.

CREATE TABLE #table (
STATIC              INT, --STATIC NUMBER
SP1                 INT, --STORED PROCEDURE COL 1
SP2                 INT, --STORED PROCEDURE COL 2
SP3                 INT, --STORED PROCEDURE COL 3
);

INSERT INTO #table (SP1,SP2,SP3)
EXEC stored_procedure 'param_1', 'param_2';
UPDATE #table
SET STATIC = 1
WHERE STATIC IS NULL;

INSERT INTO #table (SP1,SP2,SP3)
EXEC stored_procedure 'param_3', 'param_4';
UPDATE #table
SET STATIC = 2
WHERE STATIC IS NULL;

Предполагая, что хранимые процедуры возвращаются3 столбца в указанном порядке.

...