存储过程错误。将列从一个表插入另一个表

时间:2015-02-26 10:43:24

标签: sql-server stored-procedures

我有一个存储过程,我试图在表中插入两列,一列的值来自另一个表,第二列的值是常量并在参数中传递。

我想我将不得不使用某种循环,但我不知道如何。请帮助

我的存储过程

CREATE PROCEDURE sp_MTS_MTS_MemberTracking_request
    -- Add the parameters for the stored procedure here
@monthYear datetime 
AS

select [MemberId] from [dbo].[MTS_Members] where Is_Active='true'

insert into [dbo].[MTS_MemberTracking] (MemberId,MonthYear)values ((select [MemberId]
 from [dbo].[MTS_Members]
 where Is_Active='true'),@monthYear)  

错误

Msg 512,Level 16,State 1,Line 1 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。

1 个答案:

答案 0 :(得分:4)

由于MTS_Members Is_Active='true'中有多个记录,insert... values您无法使用insert into [dbo].[MTS_MemberTracking] (MemberId,MonthYear) select [MemberId], @monthYear from [dbo].[MTS_Members] where Is_Active='true' 语法插入记录。

如果你真的想插入所有"活跃"的ID记录然后只需将您的查询更改为:

where

或者,如果它应该只是一个要插入的记录 - 您必须更改select的insert... values条件才能返回一个MemberId,将该ID存储在某个变量中并在{{1}}构造中使用。