存储过程INSERT INTO具有不同的列数

时间:2019-02-21 23:40:18

标签: sql-server tsql variables stored-procedures insert

我有一个存储过程,我正在尝试将一些数据插入临时表中。但是,存储过程仅包含这些列中的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 :(得分:1)

只需在插入语句中指定三列,然后使用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)