Хранимая процедура INSERT INTO с другим количеством столбцов - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть хранимая процедура, и я пытаюсь вставить некоторые данные во временную таблицу.Тем не менее, хранимая процедура содержит только 3 из этих столбцов (от col1 до col3), и я пытаюсь обновить один из них и автоматически увеличить последний.

DECLARE @customCol VARCHAR(12)  

CREATE TABLE #table 
(
    col1 VARCHAR(50), 
    col2 INT, 
    col3 INT,
    customCol VARCHAR(12), 
    rowNumber INT PRIMARY KEY IDENTITY
)

INSERT INTO #table (col1, col2, col3, customCol, rowNumber) 
    EXEC sp @var1, @var2

UPDATE #table 
SET customCol = @customCol 
WHERE rowNumber = (SELECT COUNT(*) FROM #table)

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

Имя столбца или количество предоставленных значений не соответствует определению таблицы.

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

1 Ответ

0 голосов
/ 22 февраля 2019

Просто укажите три столбца в операторе вставки и используйте IDENTITY(1,1) вместо IDENTITY

--Create tables
CREATE TABLE #table (
col1 VARCHAR(50), 
col2 INT, 
col3 INT,
customCol VARCHAR(12), 
rowNumber INT PRIMARY KEY IDENTITY(1,1)
)

--Insert into first temp table
INSERT INTO #table (col1, col2, col3) EXEC Sp  @var1,@var2


UPDATE #table SET customCol = @customCol WHERE rowNumber = (SELECT MAX(rowNumber) FROM #table2)
...