我有一个存储过程,我正在尝试将一些数据插入临时表中。但是,存储过程仅包含这些列中的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个其他值,有关如何调整查询以解决此问题的任何提示?
答案 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)