2011-08-18 41 views
8

Đây là lần đầu tiên tôi viết một quy trình được lưu trữ để gửi email cho ai đó. Khi cố gắng để thực hiện tôi nhận được các lỗi này:Thủ tục lưu trữ SQL Server để gửi email

Msg 102, Level 15, State 1, Procedure EmailTodaysErrors, Line 14 
Incorrect syntax near '@MailServer'. 
Msg 137, Level 15, State 2, Procedure EmailTodaysErrors, Line 26 
Must declare the scalar variable "@mailserver". 
Msg 137, Level 15, State 2, Procedure EmailTodaysErrors, Line 33 
Must declare the scalar variable "@Body". 

Mã mà tôi đang sử dụng được gây ra điều này là:

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE EmailTodaysErrors 
@SenderName varchar(100), 
@SenderAddress varchar(100), 
@RecipientName varchar(100), 
@RecipientAddress varchar(100), 
@Subject varchar(200), 
@Body varchar(8000) 
@MailServer varchar(100) = 'localhost' 
AS 
SET NOCOUNT ON; 
declare @oMail int --Object reference 
declare @resultcode int 
EXEC @resultcode = sp_OACreate 'CDONTS.NewMail', @oMail OUT 

if @resultcode = 0 
BEGIN 
EXEC @resultcode = sp_OASetProperty @oMail, 'RemoteHost', @mailserver 
EXEC @resultcode = sp_OASetProperty @oMail, 'FromName', @SenderName 
EXEC @resultcode = sp_OASetProperty @oMail, 'FromAddress', @SenderAddress 
EXEC @resultcode = sp_OASetProperty @oMail, 'From', @SenderAddress 
EXEC @resultcode = sp_OASetProperty @oMail, 'To', @RecipientAddress 
EXEC @resultcode = sp_OASetProperty @oMail, 'Subject', @Subject 
EXEC @resultcode = sp_OASetProperty @oMail, 'Body', @Body 
EXEC @resultcode = sp_OAMethod @oMail, 'Send', NULL 
EXEC sp_OADestroy @oMail 
END 

set nocount off 
GO 

Bất kỳ trợ giúp sẽ được đánh giá rất nhiều. Cảm ơn trước.

Trả lời

11

Bạn thiếu dấu phẩy sau dòng @body, điều này sẽ loại bỏ các tuyên bố của bạn.

Thêm nó ở đây:

@Body varchar(8000), -- HERE 
@MailServer varchar(100) = 'localhost' 
+0

nhờ công trình này –

+0

sẵn lòng trợ giúp. Luôn kiểm tra dấu phẩy và dấu ngoặc đơn của bạn! – JNK

11

Không sử dụng sp_oa_family để gửi thư, đã có giải pháp tích hợp với SQL Server: Database Mail. Chỉ cần cấu hình Database Mail đúng trên máy chủ của bạn, sau đó gọi sp_send_dbmail.

+0

Tôi đã thử phương pháp này là tốt nhưng tôi gặp khó khăn khi nó nói tên hồ sơ không hợp lệ –

+0

Như tôi đã nói, * cấu hình * Database Mail đầu tiên: http://technet.microsoft.com/en-us/library/ms175951.aspx –

2

Có một dấu phẩy mất tích trong tham số của bạn:

@Body varchar(8000), ---- HERE 
@MailServer varchar(100) = 'localhost' 
Các vấn đề liên quan