1

我正在使用 SQL Server 2008。

以下是存储过程的一部分。@Param1 --> @Param6 是存储过程参数。

这就是我想要做的:

INSERT INTO myTable 
VALUES (otherTableValue, @Param2, @Param3, @Param4, @Param5)
SELECT ID as otherTableValue
FROM otherTable
WHERE otherTable.Param6 = @Param6

我收到“无效的列名”作为错误。我究竟做错了什么?

4

3 回答 3

2

你的语法是错误的。要select在 an中使用 a insert,请使用 theselect而不是values

INSERT INTO myTable 
SELECT ID, @Param2, @Param3, @Param4, @Param5
FROM otherTable
WHERE otherTable.Param6 = @Param6
于 2012-08-09T21:57:01.113 回答
1

添加列名通常是一种好习惯……如果有人更改了架构怎么办。

INSERT INTO myTable (ColName1, ColName2, ColName3, ColName4, ColName5)
SELECT ID,@Param2, @Param3, @Param4, @Param5
FROM otherTable
WHERE otherTable.Param6 = @Param6
于 2012-08-09T22:00:10.360 回答
0

语法错误。@Param2、@Param3 等不是列名。

 INSERT INTO myTable 
 VALUES (otherTableValue, field2, field3, field4, field5)
 SELECT ID as otherTableValue, @Param2, @Param3, @Param4, @Param5
 FROM otherTable
 WHERE otherTable.Param6 = @Param6
于 2012-08-09T21:59:42.453 回答