我有一个存储过程,我试图在表中插入两列,一列的值来自另一个表,第二列的值是常量并在参数中传递。
我想我将不得不使用某种循环,但我不知道如何。请帮助
我的存储过程
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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。
答案 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}}构造中使用。