SQL Server存储过程调用WebService

一、发布WebService,服务的内容是通过手机号码查询用户姓名

二、编写存储过程

复制代码
create procedure [dbo].[proc_CallWebService]
@parameter varchar(20)
as
begin
    declare @obj int
    declare @url varchar(200)
    declare @response varchar(5000)
    set  @url='http://localhost/zyr/WebServiceDemo.asmx/GetUserNameByMobile?mobile='+@parameter+''
    exec sp_OACreate 'MSXML2.ServerXMLHttp',@obj out
    exec sp_OAMethod @obj,'Open',null,'GET',@url,false
    exec sp_OAMethod @obj,'send'
    exec sp_OAGetProperty @obj,'responseText',@response out
    
    select @response [response]
    exec sp_OADestroy @obj
end
复制代码

说明:

sp_OACreate 创建 OLE 对象实例。

  • 第一个参数为 OLE 对象的程序标识符(ProgID)或类标识符(CLSID)。
  • 第二个参数为返回的对象令牌,必须是数据类型为 int 的局部变量,在后面的方法中都要用到对象令牌。输出参数,必须加 OUT 或 OUTPUT。

sp_OAMethod 调用 OLE 对象的方法。

  • 第一个参数为对象令牌。
  • 第二个参数为方法名称。
  • 第三个参数为方法的返回值,如果方法返回的是对象,则该参数类型为 int。输出参数,必须加 OUT 或 OUTPUT。
  • 第四个及以后的参数为方法的参数值,如果方法的参数是输出参数,则要加上 OUT 或 OUTPUT。
  • sp_OAMethod 也可用来获取属性值。

sp_OAGetErrorInfo 获取 OLE 自动化错误信息。

  • 第一个参数为对象令牌。
  • 第二个参数为错误信息的来源。输出参数,必须加 OUT 或 OUTPUT。
  • 第三个参数为错误的描述。输出参数,必须加 OUT 或 OUTPUT。

sp_OADestroy 释放已创建的 OLE 对象。

  • 第一个参数为对象令牌。

另外,sp_OAGetProperty 获取 OLE 对象的属性值,sp_OASetProperty 将 OLE 对象的属性设置为新值,sp_OAStop 停止服务器范围内的 OLE 自动化存储过程执行环境。这些都比较简单。

三、执行存储过程

exec [dbo].[proc_CallWebService] '1526022****'

结果如下:

<?xml version="1.0" encoding="utf-8"?>  <string xmlns="http://app.cloud-erp.cn/">巫燕华</string>

四、可能出现的错误

1、问题一

解决方法:

可以使用 sp_configure 系统存储过程来查看和更改 Ole Automation Procedures 选项的当前值。

查看 OLE Automation Procedures 的当前设置。

EXEC sp_configure 'Ole Automation Procedures';
GO

启用 OLE Automation Procedures。

复制代码
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
复制代码

2、问题二

 解决方法:

在webservice的 <system.web> 节点下加入 

<webServices>
    <protocols>
        <add name= "HttpPost" />
        <add name= "HttpGet" />
    </protocols>
</webServices>

 原文地址:http://www.cnblogs.com/mbydzyr/archive/2013/04/17/3027350.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用 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 存储过程了。记得根据你的实际需求修改代码和参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值