存储过程INSERT INTO VALUES,其中一个值从另一个表中选择

时间:2012-08-09 21:54:18

标签: sql sql-server-2008 stored-procedures

我正在使用SQL Server 2008。

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

这就是我想要做的事情:

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

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

3 个答案:

答案 0 :(得分:2)

你的语法错了。要在select中使用insert,请使用select代替values

INSERT INTO myTable 
SELECT ID, @Param2, @Param3, @Param4, @Param5
FROM otherTable
WHERE otherTable.Param6 = @Param6

答案 1 :(得分:1)

添加列名通常是一种很好的做法......如果有人更改了架构,那该怎么办呢。

INSERT INTO myTable (ColName1, ColName2, ColName3, ColName4, ColName5)
SELECT ID,@Param2, @Param3, @Param4, @Param5
FROM otherTable
WHERE otherTable.Param6 = @Param6

答案 2 :(得分: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