sqlserver调用webservice发送短信

上班的时候突然有一个想法,sqlserver能否调用webservice发送短信呢?

 

经过查找资料,终于找到了解决办法,现将步骤贴到下面:

 

(1)开启sqlserver组件功能,如果不开启这个组件功能,那么在sqlserver执行语句时将不会成功。

 

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

以数据库管理员的身份执行上面的语句,返回结果如下:

 

配置选项 'show advanced options' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 'Ole Automation Procedures' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。

 

 

(2)编写SQL调用webservice的语句,代码及注释如下:

 

DECLARE @object int,@hr int
DECLARE @domain nvarchar(255)
DECLARE @sendMsg nvarchar(200),@Mobile nvarchar(15)

set @Mobile=N'15810337866'
set @sendMsg=N'SQL调用webservice发送测试短信'

--创建MSSOAP.SoapClient组件,存储到@object中
EXEC @hr=sp_OACreate 'MSSOAP.SoapClient',@object out

--'http://218.XXX.154.XXX/MRMService/SmsService.asmx?wsdl'为webservice地址,一定要加‘?wsdl’
--‘SmsService’为webservice名称
EXEC @hr = sp_OAMethod @object, 'mssoapinit',null,'http://218.XXX.154.XXX/MRMService/SmsService.asmx?wsdl','SmsService'

--'SendMsg'为webservice的一个方法,后面跟8个输入参数
EXEC @hr = sp_OAMethod @object, 'SendMsg', @domain OUT,N'999999',@Mobile,@sendMsg,N'110699',N'庞飞阳',N'1',N'总公司',N''

IF @hr <> 0
BEGIN
   EXEC sp_OAGetErrorInfo @object  
   select @object
END
ELSE
BEGIN
   select @domain
END
--释放掉@object
EXEC @hr = sp_OADestroy @object
GO

 

至此,sqlserver能否调用webservice发送短信的功能已经完成,成功收到了短信:“SQL????webservice????????????????????”。

 

有人会问,为什么收到的短信中,中文部分全部为“????????”呢,仔细查询了一下,sqlserver的编码格式,语句如下:

SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')

 

返回值为:936,说明为中文。

 

 而webservice得编码格式为UTF8,sqlserver不支持UTF8格式,所以会出现乱码。

 

希望有解决办法的高手给以指点,谢谢

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值