2012-05-03 105 views
0

任何人都可以帮助下面的存储过程?我收到错误SQL Server 2008 DBMail

附近有语法错误@profile_name'” SELECT DISTINCT()移转 作为收件人,@body =替换(@bodypre, “$审批”,名)FROM [STAS]。[DBO ] [NotifictationEmailID_View]

在查询

SELECT distinct(EmailAddress) as RECIPIENTS, 
     @body = Replace(@bodypre, "$Approver", Forename) 
FROM [STAS].[dbo].[NotifictationEmailID_View] 

这是这个存储过程的一部分

ALTER proc [dbo].[test] 
as 
begin 
DECLARE @subject VARCHAR(500) 
Declare @bodypre varchar(5000) 
DECLARE @ProgramName VARCHAR(50) 
DECLARE @FirstName VARCHAR(50) 
DECLARE @body VARCHAR(5000) 
DECLARE @email VARCHAR(500) 
declare @recipients VARCHAR(5000) 
DECLARE @CurrentRec AS INT 
DECLARE @RecCount AS INT 
Declare @emailStop as int 
SET @CurrentRec = 1 
SET @RecCount = 0 

select @subject=EmailMessageSubject, 
     @bodypre = EmailMessageBody, 
     @emailStop = EmailStop_Flag 
from STAS.dbo.MC_STAS_EmailMessage where TimeSheetStatusID = 3 

SELECT @RecCount = COUNT(EmailAddress) FROM [STAS].[dbo].[NotifictationEmailID_View] 
if (@emailStop <> 1 AND @RecCount > 0) 
    WHILE @RecCount >= @CurrentRec 
    begin 
    EXEC msdb.dbo.sp_send_dbmail 
    SELECT distinct(EmailAddress) as RECIPIENTS ,@body =Replace(@bodypre,"$Approver",Forename) from [STAS].[dbo].[NotifictationEmailID_View]      
     @profile_name = "STAS Email User", 
     @recipients = @RECIPIENTS, 
     @subject = @SUBJECT, 
     @body = @body 

    SET @CurrentRec = @CurrentRec + 1 
end 
end 

感谢,

+1

**你得到了什么**错误?请发布完整详细的错误消息...我们不介意读者,也不能看到你的屏幕.... –

+0

任何人都可以帮助下面的存储过程? **我在下面的查询中遇到错误:“@profile_name附近的语法错误”“SELECT distinct(EmailAddress)as RECIPIENTS,@body = Replace(@bodypre,”$ Approver“,Forename)FROM [STAS]。[dbo ] [NotifictationEmailID_View] ** –

回答

0

试试这个:

SELECT DISTINCT 
     EmailAddress as RECIPIENTS, 
     @body = Replace(@bodypre, "$Approver", Forename) 
FROM [STAS].[dbo].[NotifictationEmailID_View] 

DISTINCT是不是你可以调用像你这样一个功能 - 这是一个SQL关键字。

+0

谢谢,开始工作如下。 –