原文:http://msdn.microsoft.com/msdnmag/issues/04/04/DataPoints/default.aspx
这篇FQA概述了写T-Sql语句时经常碰到的问题,还有用SqlServer发送电子邮件的源码下载,一个字"牛".
#"关于触发器的判断语句该怎么写?"小弟很欣赏这个话题.
#"第二个话题是Sql语句如果调用Com组件?"其中发送电子邮件的源码实在太好了.小弟在里贴出来方便
自己以后使用.
ALTER PROCEDURE prSendMail
@sTo VARCHAR(500),
@sBody VARCHAR(8000),
@sSubject VARCHAR(500),
@sFrom VARCHAR(500)
AS
DECLARE @nCDO INT,
@nOLEResult INT,
@nOutput INT,
@sSource VARCHAR(255),
@sDescription VARCHAR(255),
@sProgID VARCHAR(50),
@sMsg VARCHAR(250)
SET @sProgID = 'CDO.Message'
EXECUTE @nOLEResult = sp_OACreate @sProgID, @nCDO OUT
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error creating object ' + @sProgID +
'. Error # = ' + CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
EXECUTE @nOLEResult = sp_OASetProperty @nCDO, 'To', @sTo
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error executing CDO.To property. Error # = ' +
CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
EXECUTE @nOLEResult = sp_OASetProperty @nCDO, 'From', @sFrom
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error executing CDO.From property. Error # = ' +
CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
EXECUTE @nOLEResult = sp_OASetProperty @nCDO, 'Subject', @sSubject
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error executing CDO.Subject property. Error # = ' +
CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
EXECUTE @nOLEResult = sp_OASetProperty @nCDO, 'TextBody', @sBody
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error executing CDO.TextBody property. Error # = ' +
CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
—Call Send method of the object
EXECUTE @nOLEResult = sp_OAMethod @nCDO, 'Send', Null
IF @nOLEResult <> 0
BEGIN
EXEC sp_OAGetErrorInfo @nCDO, @sSource OUT, @sDescription OUT
SET @sMsg = 'Error executing CDO.Send method . Error # = ' +
CAST(@nOLEResult AS VARCHAR(20)) +
'. Description = ' + @sDescription
RAISERROR (@sMsg, 16, 1)
RETURN
END
—Destroy CDO
EXECUTE @nOLEResult = sp_OADestroy @nCDO
RETURN @nOLEResult
GO
博客概述了写T-Sql语句时常见问题,还提供了用SqlServer发送电子邮件的源码下载。涉及触发器判断语句写法、Sql语句调用Com组件等话题,其中发送邮件源码被贴出以便后续使用。
1622





