Если я правильно вас понимаю, вы пытаетесь присвоить результат SELECT
@message
. Синтаксис, который вы используете, неверен. Вы не можете запустить пакет операторов внутри SET
, как в TSQL. Вы можете назначить @message
результаты запроса, если ваш запрос дает строковый результат. Поэтому я думаю, что вы, вероятно, захотите изменить свой код на что-то вроде этого (исключив другие операторы из вашего SET
оператора).
Declare @Body varchar(max),
@TableHead varchar(max),
@TableTail varchar(max),
@message as varchar(max);
DECLARE @CNT as int, @SLS as NVARCHAR(10);
select [employeeid], [Sales]
into #loctempemployee from tblEmployees;
Set @CNT = (Select COUNT (Distinct EmployeeID) from #loctempemployee);
Set @message=
(
SELECT tr.Principal As [TD], tr.[Company Name] As [TD], ai.[Action Item] As [TD], ai.Owners As [TD], ai.[Due Date] As [TD], ai.Updated As [TD]
FROM [tblActionItem] ai
INNER JOIN tblTripReport tr ON ai.TripReportID = tr.tripreportID
INNER JOIN tblCustomers cu ON cu.CustomerID = tr.[Customer ID]
INNER JOIN tblEmployees em ON em.EmployeeID = cu.EmployeeID
WHERE em.Sales = (Select sales from #loctempemployee Where EmployeeID = (Select top 1 EmployeeID from #loctempemployee))
For XML raw('tr'), Elements
);
Delete #loctempemployee Where EmployeeID = (Select top 1 EmployeeID from #loctempemployee);
set @CNT = @CNT -1;
drop table #loctempemployee;
Select @Body = (@message);
Кроме того, вы делаете это в цикле, который вы не показываете? Существует END
, у которого нет соответствующего BEGIN
, и это также объясняет строку set @CNT = @CNT -1;
.