B W*_*ods 8 sql t-sql sql-server sql-server-2008
这是我第一次尝试编写通过电子邮件发送给某人的存储过程.在尝试执行时,我收到以下错误:
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".
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码是:
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
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.提前致谢.
Rem*_*anu 11
不要使用sp_oa_family发送邮件,已经有一个内置的SQL Server解决方案:数据库邮件.只需在服务器上正确配置数据库邮件,然后调用即可sp_send_dbmail.
JNK*_*JNK 11
@body在行之后你丢失了一个逗号,这会丢掉你的声明.
在这里添加:
@Body varchar(8000), -- HERE
@MailServer varchar(100) = 'localhost'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28701 次 |
| 最近记录: |