群发短信的SQL Server存储过程

如果你使用的是移动代理服务器,那么短信发送表便是Affair。其表结构如下:

 

事务序列表(Affair)

·           序号           ID                  int(4)             Not Null

·           时间           SendTime           Datatime          Not Null

·           手机号码       SendHandSet        varchar(12)         Not Null

·           事务内容       SendAffairContent  varchar(140)        Not Null

·           是否执行        YNRUN               int                 Not Null

0、未发送1、发送成功 2、发送失败 3、超期未发送

·           来源            Source              int                 Not Null

         1-局域网自动添加

         2-互联网

         3-手机

         4-局域网手动添加

·           来源机号        SourceID            varchar(12)         Not Null

·           类型            SourceType          int                 Not Null

     1-查询

         2-发送短信

因为群发,所以我们需要一个要发送短信的临时用户列表tmp_SMS_senders。

 

表结构如下:

userid  bigint  自增

username  varchar(50)

phone varchar(64)  不允许为空

 

 

Affair表和tmp_SMS_senders表相关联的是就是SendHandSet字段和phone字段了,指手机号码。

因为短信服务会隔几秒扫描Affair表,是否有YNRUN为0的数据行,有则进行发送,然后更新字段值为1。

所以嘛,该存储过程的作用就是,把tmp_SMS_senders的手机号码列表,写到Affair表去。比如说,tmp_SMS_senders有三行数据,经过该存储过程的运行,Affair表增加SendAffairContent内容一样,YNRUN为0的三行内容。

 

那么该存储过程是:

 

-- 新建存储过程
Create procedure [dbo].[proc_SendInfo_bg2]    -- 存储过程名
--
 存储过程参数
@content    nvarchar(3000)        --信息内容


as
begin
    -- 存储过程语句块-------------------------------------------------------开始
    SET NOCOUNT ON
    
    declare @sName varchar(20)
    declare @Now datetime
    
    declare @uName varchar(32)
    declare @uPhone varchar(64)
    
    
    set @Now = getdate()
    set @sName='bg_admin'
    
        
                -- 定义一个手机游标
                DECLARE mobile_cursor CURSOR LOCAL SCROLL FOR select username,phone from [HC_MDOC].dbo.tmp_SMS_senders 
                open mobile_cursor
                FETCH NEXT FROM mobile_cursor into @uName,@uPhone
                while @@fetch_status=0
                begin
                    insert into [smsdb].dbo.Affair(SendTime,SendHandSet,SendHandSetName,SendAffairContent,YNRUN,Source,SourceID,SourceName,SourceType)values(@Now,@uPhone,@uName,@content,0,4,'1','admin','2')
                    fetch next from mobile_cursor into @uName,@uPhone
                end
                -- 关闭游标    
                close mobile_cursor
                -- 释放游标
                dealLocate mobile_cursor
            

    
    -- 存储过程语句块-------------------------------------------------------结束
end
 

 

 

 

posted @ 2011-10-08 11:40  草珊瑚  阅读(1110)  评论(0)    收藏  举报