微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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格式,所以会出现乱码。

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐