Вы пытаетесь $set
и $pull
на одном и том же поле в одном обновлении - конфликт двух операций; поэтому нет, вы не можете использовать эти операторы таким образом.
Вы можете легко разделить это на две части:
SMUProfiles.update(
{ owner: this.userId },
{ $set: { 'classrooms.owner': classids },
);
SMUProfiles.update(
{ owner: this.userId },
{ $pull: { 'classrooms.students': classroom_id },
);
См., Например. этот ответ
Путем я нашел, что мог сделать это, которое было на самом деле довольно просто:
exec ? = dbo.StoredProc @param = ?, @param2 = ?
и затем @RETURN_VALUE появится на Доступных Целевых столбцах
Не используйте имена переменной в свойстве SqlCommand, просто вопросительные знаки и или "ПРОИЗВОДИТЕ" маркировку для выходных параметров.
Прием для захвата значения выходного параметра должен поместить полученное преобразование столбца в конвейер перед Командой OLE DB для представления столбца (отображенный на переменной SSIS) для получения результата процедуры.
См. Столбцы Преобразования И Идентификационных данных Команды OLEDB для хорошего обзора со снимками экрана того, как сделать это. Также посмотрите Целевой Адаптер Мусора для Места назначения Мусора, используемого в первой ссылке. Это - удобный инструмент для имения в наличии для отладки вещей как это.
Если хранимая процедура возвращает набор результатов, то необходимо получить ее:
DECLARE @results TABLE (
[ID] INT NOT NULL
)
INSERT @results ([ID])
EXEC dbo.uspInsertContactAddress @Address = ?, @ContactID = ?, @DeliveryMethodId = ?, @ID = ? output, @Version = ? output
SELECT * FROM @results
Примечание: Я использовал Табличную переменную. Вы, возможно, должны были бы использовать временную таблицу в зависимости от своей версии SQL Server.
Я всегда использовал параметр, отображающийся в Выполнить Задаче SQL с большим успехом. SQL-оператор является "ДОЛЖНОСТНЫМ ЛИЦОМ nameofstoredproc?? ВЫВОД", с вопросительными знаками, указывающими местоположение параметров и ВЫВОДА, если параметр является выводом.
Вы указываете параметры в отображении с соответствующим именем переменной, направление (вход, вывод, ReturnValue) и тип данных. Так как Ваш сохраненный proc возвращает данные, которые Вы хотите через набор результатов, затем указываете направление для переменных для сбора идентификатора и версии как ReturnValue. Это должно работать просто великолепно для Вас.