Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
DaichiRyuu Member Откуда: Сообщений: 9 |
Добрый день. Помогите пожалуйста понять что не так, в скрипте. DECLARE @db_name nvarchar(100), @fname nvarchar(100), @fid int, @recipients nvarchar(100), @min_id int = (SELECT MIN(fid) FROM dblist WHERE activeflg = 1 AND Country = 'RUS' AND fid NOT IN (SELECT fid FROM dbo.mailing_status WHERE SendDate = CAST(GETDATE() as date) AND Country = 'RUS' AND RepName = 'ServiceLvL')), @max_id int = (SELECT MAX(fid) FROM dblist WHERE activeflg = 1 and Country = 'RUS') SET @db_name = (SELECT Name FROM dblist WHERE activeflg = 1 and Country = 'RUS' and fid = @min_id) SET @fname = (SELECT fname FROM dblist WHERE activeflg = 1 and Country = 'RUS' and fid = @min_id) SET @fid = (SELECT fid FROM dblist WHERE activeflg = 1 and Country = 'RUS' and fid = @min_id) SET @recipients = (SELECT c.DOM_mail FROM Contactlist c JOIN dblist d ON c.Country=d.Country AND c.fid=d.fid AND d.activeflg=1 AND d.name = '' + @db_name + '' WHERE c.DOM_mail <> 'null') WHILE @min_id <= @max_id AND @min_id in (SELECT fid FROM dblist WHERE activeflg = 1 and Country = 'RUS') BEGIN SET @db_name=(SELECT Name FROM dblist WHERE activeflg = 1 and Country = 'RUS' and fid = @min_id) EXECUTE('EXEC [ftphbc.cdc.ru].[Distr_Plus].[dbo].[DS_ServiceLvL] '+@db_name+''); EXECUTE('IF (SELECT COUNT(*) FROM [ftphbc.cdc.ru].[Distr_Plus].[dbo].[SRVCLvL_' + @db_name + '])>0 and '''+ @recipients +''' <> ''null'' EXEC xp_cmdShell ''BCP "SELECT * FROM [FTPHBC.CDC.RU].[Distr_Plus].[dbo].[SRVCLvL_Headers] UNION ALL SELECT [Distrib],[HQ],[NetLoc],[Client],CAST(mfID as nvarchar(50)),[orNumber],[naklNumber],[Category],[Brand],CAST([EAN] as nvarchar(50)),[SKU],CAST([ordrs_amnt] as nvarchar(50)),CAST([nakl_amnt] as nvarchar(50)),CAST([preResult] as nvarchar(50)),CAST([Result] as nvarchar(50)) FROM [FTPHBC.CDC.RU].[Distr_Plus].[dbo].[SRVCLvL_' + @db_name + ']" queryout C:\Transfer\DS_ServiceLevel\' + @db_name + '.csv -T -c -t ";" -C Win1251'' EXEC msdb.dbo.sp_send_dbmail @recipients = '''+ @recipients +''', @subject = N''Уровень сервиса дистрибьютора '+ @fname +''', @body = N''Данное письмо сформировано автоматически и содержит в себе результат расчета уровня сервиса дистрибьютора.'', @body_format = ''HTML'', @file_attachments =''C:\Transfer\DS_ServiceLevel\' + @db_name + '.csv'', --@copy_recipients =''xxx'', @profile_name = ''Report_Mail'' IF (SELECT COUNT(*) FROM [ftphbc.cdc.ru].[Distr_Plus].[dbo].[SRVCLvL_' + @db_name + '])>0 AND ' + @recipients + ' <> null INSERT INTO dbo.mailing_status SELECT CAST(GETDATE() as date),''RUS'','+@fid+',''ServiceLvL'',1 ELSE INSERT INTO dbo.mailing_status SELECT CAST(GETDATE() as date),''RUS'','+@fid+',''ServiceLvL'',0 ') SET @min_id=(SELECT MIN(fid) FROM dblist WHERE activeflg = 1 AND Country = 'RUS' AND fid NOT IN (SELECT fid FROM dbo.mailing_status WHERE SendDate = CAST(GETDATE() as date) AND Country = 'RUS' AND RepName = 'ServiceLvL')) SET @fname =(SELECT fname FROM dblist WHERE activeflg = 1 AND Country = 'RUS' and fid = @min_id) SET @fid =(SELECT fid FROM dblist WHERE activeflg = 1 AND Country = 'RUS' and fid = @min_id) SET @recipients = (SELECT c.DOM_mail FROM Contactlist c JOIN dblist d ON c.Country=d.Country AND c.fid=d.fid AND d.activeflg=1 AND d.name = '' + @db_name + '' WHERE c.DOM_mail <> 'null') END Скрипт выполняет процедуру, далее экспортирует данные в .csv, и после этого выбирает адресата из таблицы контактов и отправляет отчет на почту. Но если не статично прописать ему адрес, он почему то ругается (17583 row(s) affected) (15514 row(s) affected) (17607 row(s) affected) (17607 row(s) affected) (1 row(s) affected) Msg 4104, Level 16, State 1, Line 12 The multi-part identifier "xxx@xxx.com" could not be bound. Подскажите пожалуйста где тут ошибка... |
22 янв 18, 22:01 [21128363] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1712 |
DaichiRyuu, Вы принтом выведите вашу команду и посмотрите как она выглядит. IF (SELECT COUNT(*) FROM [ftphbc.cdc.ru].[Distr_Plus].[dbo].[SRVCLvL_' + @db_name + '])>0 AND ' + @recipients + ' <> nullтут у вас ошибка |
22 янв 18, 22:10 [21128377] Ответить | Цитировать Сообщить модератору |
DaichiRyuu Member Откуда: Сообщений: 9 |
Если честно,я не совсем понял в чем там ошибка. не могли бы пояснить. Заранее спасибо. |
22 янв 18, 22:15 [21128389] Ответить | Цитировать Сообщить модератору |
DaichiRyuu Member Откуда: Сообщений: 9 |
Всё, понял, кавычки забыл дополнительные, спасибо большое за помощь. |
22 янв 18, 22:19 [21128404] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
Вот это ошибка так ошибка! |
||
23 янв 18, 09:58 [21129137] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |