2015-02-26 3 views
0

У меня есть хранимая процедура, в которой я пытаюсь вставить два столбца в таблицу, значение одного столбца из другой таблицы, а значение второго столбца является постоянным и передается в параметре.Ошибка хранимой процедуры. Вставка столбцов из одной таблицы в другую

Я думаю, что мне придется использовать петлю некоторых, но я понятия не имею, как это сделать. Пожалуйста, помогите

MY хранимая процедура

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 Subquery вернулся более чем на 1 значение. Это недопустимо, когда подзапрос следует =,! =, <, < =,>,> = или когда подзапрос используется как выражение. Заявление было прекращено.

ответ

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' 

или, если она должна быть точно одна запись для вставки - вы должны изменить where состояние ваш выбор, чтобы вернуть ровно один MemberId, сохранить этот идентификатор в некоторой переменной и использовать в конструкции insert... values.

+0

Это работает, но никакая строка не вставлена ​​в таблицу mts_member_tracking. –

+0

У вас есть '' где Is_Active = 'true'' записи в '[dbo]. [MTS_Members]' table :) Если ваш столбец 'Is_Active' бит, пожалуйста, упомянул 'true' без единой цитаты вокруг него. – Murtaza

+0

Вы уверены, что выбрали что-то? Если 'select ...' возвращает данные, тогда' insert into ... select ...' нужно вставить эти данные в таблицу, указанную в разделе 'insert', или выдать ошибку, если, например, существуют несоответствия типов в столбцах для вставки и возврата данных. –

Смежные вопросы