群发短信的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-发送短信
表结构如下:
userid bigint 自增
username varchar(50)
phone varchar(64) 不允许为空
因为短信服务会隔几秒扫描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
合乎自然而生生不息。。。


浙公网安备 33010602011771号