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

 

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

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
调用 SQL Server 存储过程,你可以使用以下步骤: 1. 首先,确保你的 SQL Server 已经安装并运行,并且你有访问权限。 2. 在 SQL Server Management Studio (SSMS) 中创建存储过程。你可以使用 T-SQL 语言编写存储过程,例如: ```sql CREATE PROCEDURE YourProcedureName @Parameter1 INT, @Parameter2 VARCHAR(50) AS BEGIN -- 在这里编写存储过程的逻辑 -- 例如查询、更新或插入数据等 END ``` 3. 保存并执行上述脚本,以创建存储过程。 4. 在你的 Web 服务项目中,添加对 SQL Server 的引用。你可以使用 Entity Framework、ADO.NET 或其他适当的技术来连接和与 SQL Server 进行交互。 5. 在你的 Web 服务方法中,调用存储过程。具体的代码取决于你选择的技术。以下是使用 ADO.NET 执行存储过程的示例代码: ```csharp using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand("YourProcedureName", connection)) { command.CommandType = CommandType.StoredProcedure; // 添加存储过程的参数 command.Parameters.AddWithValue("@Parameter1", parameter1Value); command.Parameters.AddWithValue("@Parameter2", parameter2Value); connection.Open(); command.ExecuteNonQuery(); connection.Close(); } } ``` 6. 替换 `connectionString` 为你的 SQL Server 连接字符串,`YourProcedureName` 为你的存储过程名称,`parameter1Value` 和 `parameter2Value` 为相应的参数值。 通过以上步骤,你就可以在你的 Web 服务中调用 SQL Server 存储过程了。记得根据你的实际需求修改代码和参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值