SqlServer中如何写触发器,调用Com发送电子邮件等等

原文: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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值