SQL Server: ошибка в триггере - PullRequest
0 голосов
/ 16 мая 2018

При попытке создать триггер для таблицы, отправляющей мне электронное письмо, появляется следующая ошибка:

В списке выбора можно указать только одно выражение, если подзапрос не введенс EXISTS

По сути, я сделал следующее:

set @stu = (select name, year, gender from studentinformation where id = @id)
set @bod = ' Details changed for ' + @stu

Exec msdb.dbo.sp_send_dbmail @body = @bod;

Я только что показал ту часть кода, которая, как мне кажется, будет иметь проблемы.Я чувствую, что использование скобок заставляет SQL чувствовать, что это подзапрос?Это причина?Но тогда как мне отправить результаты запроса через триггер по электронной почте?Оператор выбора относится к другой таблице, а не к той, на которой основан триггер

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете иметь только 1 значение в @stu. Вы пытаетесь заполнить его именем, годом и полом. Я предлагаю DECLARE для других ваших значений, поэтому что-то вроде

DECLARE @stu varchar(100)
DECLARE @MyYear INT
DECLARE @MyGender varchar(10)
set @stu = (select name from studentinformation where id=@id)
set @MyYear = (select Year from studentinformation where id = @id)
set @MyGender = (select gender from studentinformation where id = @id)
0 голосов
/ 16 мая 2018

Вы должны указать свой запрос в параметре @query sp_send_dbmail

exec sp_send_dbmail 
     @query = 'select name,year,gender from studentinformation where id = 1234',
     ...  -- some other parameters

пожалуйста, обратитесь к документации по sp_send_dbmail для получения дополнительной информации https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-send-dbmail-transact-sql?view=sql-server-2017

...