2011-08-18 33 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'