基本上,我正在尝试创建一个向我发送电子邮件警报的T-SQL语句。我已附上以下查询。查询从选择开始,结束于Tat 0是我想要执行的并通过电子邮件返回这些数据。
当我单独运行该查询时,它返回正常。我怀疑它在整个T-SQL语句中的内容是不正确的。我有点像db newb。任何澄清都会非常有帮助。
begin
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'TRGEmail',
@recipients = 'test@test.com',
@body = 'The cases below have reach TAT 3 for PRI X Ray. Please set accordingly.
',
@query = 'select
PATIENTS.FirstName, PATIENTS.Lastname,
STUDIES.study_datetime,
STUDY_LIST_VIEW.tat,
PATIENTS.Patient_ID
from
opalrad.dbo.INSTITUTIONS INSTITUTIONS,
opalrad.dbo.PATIENTS PATIENTS,
opalrad.dbo.STATUSES STATUSES,
opalrad.dbo.STUDIES STUDIES,
opalrad.dbo.studies_calc studies_calc,
opalrad.dbo.STUDY_LIST_VIEW STUDY_LIST_VIEW,
opalrad.dbo.TRANSCRIPTION_TEXT TRANSCRIPTION_TEXT
where
STUDIES.study_id = studies_calc.study_id AND
STUDIES.institution_id = INSTITUTIONS.institution_id AND
TRANSCRIPTION_TEXT.STUDY_ID = STUDIES.study_id AND
TRANSCRIPTION_TEXT.STUDY_ID = studies_calc.study_id AND
PATIENTS.Patient_ID = STUDIES.patient_id AND
STUDY_LIST_VIEW.INSTITUTION_ID = INSTITUTIONS.institution_id AND
STUDY_LIST_VIEW.PATIENT_ID = PATIENTS.Patient_ID AND
STUDY_LIST_VIEW.study_id = STUDIES.study_id AND
STUDY_LIST_VIEW.study_id = studies_calc.study_id AND
((INSTITUTIONS.institution_id= 569 ) AND
(STUDY_LIST_VIEW.tat=0))',
@subject = 'PRI STAT 3 requiring attention';
end
答案 0 :(得分:1)
使用网络服务器实际发送电子邮件而不是SQL Server是否可行?如果是这样,我建议你这样做。
使用数据库执行此操作在性能方面存在风险。游标通常很慢,因为它需要单独对每一行执行操作。在这种情况下,您正在为每一行调用一个过程,这可能会使事情变得更糟。
如果您只是将结果集返回到您的网络服务器,则可以使用内置的电子邮件功能。由于您的查询工作正常,您将解决数据库问题,并可能为您节省很多性能问题。
作为旁注,是否可以使用CSS代替<b>
标签? ;)
编辑:如果您无法将此功能移至网络服务器,请尝试在set @tableHTML
行的末尾添加单引号。它缺少结束引用,这会导致语法错误。此外,请确保在完成光标后取消分配光标:DEALLOCATE cursorName