2011-08-18 2 views
8

이것은 누군가에게 전자 메일을 보내는 저장 프로 시저를 작성한 첫 시도입니다. 나는 어떤이는 원인이되는 사용하고전자 메일을 보내기위한 SQL Server 저장 프로 시저

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". 

코드 : 어떤 도움을 크게 감상 할 수

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 

실행하려고 할 때 나는 이러한 오류를 얻을. 미리 감사드립니다.

답변

11

@body 행 다음에 쉼표가 누락되어 신고가 취소됩니다.

여기를 추가

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

덕분에이 작동 –

+0

도와 드리겠습니다. 쉼표와 괄호를 항상 확인하십시오! – JNK

11

메일을 보내려면 sp_oa_family를 사용하지 마십시오. 이미 SQL Server가 내장 된 솔루션 : Database Mail이 있습니다. 단순히 서버에서 데이터베이스 메일을 올바르게 구성한 다음 sp_send_dbmail으로 전화하십시오.

+0

나뿐만 아니라이 방법을 시도했지만 내가 박히은 프로파일 이름이 난 것처럼 –

+0

유효하지 않습니다 말할 때 말했다, * 구성 * 데이터베이스 메일 먼저 : http://technet.microsoft.com/en-us/library/ms175951.aspx –

2

이 매개 변수에서 누락 쉼표있다 :

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