基本上,我正在尝试创建一条向我发送电子邮件警报的T-SQL语句。我已经附加了下面的查询。查询从select开始,在Tat 0结束,这是我想要执行的,并通过电子邮件返回这些数据。
当我单独运行该查询时,它会很好地返回它。我怀疑这整个T-SQL语句中的某些东西是不正确的。我是个数据库新手。任何澄清都会非常有帮助。
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发布于 2013-01-23 05:29:41
使用SQL服务器而不是SQL Server来实际发送电子邮件是否可行?如果是这样的话,我会建议你这么做。
使用数据库来做这件事在性能方面可能有风险。游标通常很慢,因为它需要分别对每一行执行操作。在本例中,您为每一行调用了一个过程,这可能会使情况变得更糟。
如果您只是将结果集返回到您的set服务器,您可以在那里使用内置的电子邮件功能。由于您的查询运行良好,您将解决数据库问题,并有可能为自己节省大量的性能问题。
顺便提一句,是否可以使用CSS代替<b>标记来设置样式?;)
编辑:如果您不能将此功能移动到end服务器,请尝试在set @tableHTML行的末尾添加单引号。它缺少一个结束引号,这会导致语法错误。此外,确保在使用完游标后释放它:DEALLOCATE cursorName
https://stackoverflow.com/questions/14468177
复制相似问题