如果用存储过程来调用webservice
那存储过程的功能感觉能做好多事情了?
别自欺欺人了、那些功能还是webservice来实现的...

完整的webservice代码:(也是默认的,新建.asmx文件的时候就有的:)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; namespace webservice
{
/// <summary>
/// service 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
//[System.Web.Script.Services.ScriptService]
public class service : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}

http://localhost:44786/service.asmx

具体的页面(路径:http://localhost:44786/service.asmx/HelloWorld)

好吧·默认的一个服务就是的...下面开始讲下重点...如果用存储过程来调用这个服务...

 USE [master]
GO
/****** Object: StoredProcedure [dbo].[U_CallWebService] Script Date: 11/04/2016 09:57:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[U_CallWebService]
@parameter varchar(200)--这个现在用不到,以后如果需要参数的话需要的....
AS
BEGIN
DECLARE @OBJ INT
DECLARE @URL VARCHAR(500)
DECLARE @RESPONSE VARCHAR(3000)
DECLARE @RET VARCHAR(1000) SET @URL ='http://localhost:44786/service.asmx/HelloWorld'
EXEC SP_OACREATE 'MSXML2.ServerXMLHttp',@OBJ OUT
EXEC SP_OAMETHOD @OBJ,'Open',NULL,'post',@URL,FALSE
EXEC SP_OAMETHOD @OBJ,'send'
--@RET : 0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 整数值。
EXEC @RET = SP_OAGETPROPERTY @OBJ,'responseText',@RESPONSE OUT
IF @RET <> 0
BEGIN
EXEC sp_OAGetErrorInfo @OBJ
END
select @RET AS 'ret(0即成功)'
--原本以为这个[d]是返回数据中的一个值(例如这样{"d":"Hello World"}),是必须写[d]的
--正确的解释是:这个[d]是SELECT 的一个列名,和SELECT GETDATE() AS TIME 中的TIME是一样性质的.指定列名;
SELECT @RESPONSE--这个是(无列名)
SELECT @RESPONSE[d]
SELECT @RESPONSE AS 'd'--SELECT @RESPONSE[d] 等于SELECT @RESPONSE AS 'd'
--释放、销毁
EXEC SP_OADESTROY @OBJ END

存储过程调用webservice

在运行下就可以看到效果了...

不足之处:

0001.<code>EXEC @RET = SP_OAGETPROPERTY @OBJ,'responseText',@RESPONSE OUT</code>

'responseText'即属性值,如果不知道会报错:

Error        Source                Description      HelpFile    HelpID
0x80020006    ODSOLE Extended Procedure     未知名称。       NULL        0

<我调用WCF的时候,调试都可以看到确实运行我的本地WCF的一个服务了,但是这个返回值因为不知道属性名获取不到!>

0010.貌似字符超过8000就会报错...还是4000?总之不能太长...

扩展:

至今还不知道调用WCF的那个属性值是什么!!!

望有搞过这块的不吝(Lin)赐教...

附:

微软关于错误的解决办法(都是English):https://support.microsoft.com/en-us/kb/325492

SQL存储过程来调用webservice的更多相关文章

  1. 存储过程中调用webservice

    存储过程中调用webservice其实是在数据库中利用系统函数调用OLE. 1.查找webservice api 可得到MSSOAP.SoapClient. 2.查找API 接口可得到mssoapin ...

  2. SQL存储过程的调用及写法

    调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...

  3. SQL 存储过程里调用另一个存储过程

    由于创建了一个存储过程,并且要在另一个存储过程里调用这个存储过程所以在网上找了一下相关的代码,现在总结一下,防止以后还会用到 由于这次我写的存储过程只需要返回一个求和的结果,所以我使用了output ...

  4. SQL Server中调用WebService的实例

    尊重原著作:本文转载自http://www.cnblogs.com/icycore/p/3532197.html 1.Ole Automation Procedures 服务器配置选项 当启用 OLE ...

  5. SQL——存储过程实例 调用带参数的过程(成绩输出)

    create or replace procedure test_score(input in number,output out char) is begin then begin output : ...

  6. 在存储过程中调用WebService

    1 create procedure usp_CallWebServices 2 ( 3 @parameter nvarchar(500)=null 4 ) 5 as 6 Declare @obj i ...

  7. SQL Server中调用WebService

    首先要启用Ole Automation Procedures,使用sp_configure 配置时如果报错"不支持对系统目录进行即席更新",可以加上WITH OVERRIDE选项. ...

  8. SQL调用WebService接口

    今天在做一个非常奇葩的东西.中间有个过程要在SQL触发器里面调用webservice接口.呵呵~ ALTER TRIGGER tgr_UpdateMemcached ON dbo.[User] AFT ...

  9. SQL存储过程概念剖析

    一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...

随机推荐

  1. Linux File System

    目录 . Linux文件系统简介 . 通用文件模型 . VFS相关数据结构 . 处理VFS对象 . 标准函数 1. Linux文件系统简介 Linux系统由数以万计的文件组成,其数据存储在硬盘或者其他 ...

  2. ASP.NET MVC 4入门

    一.MVC设计模式将Web应用分解成三个部分:模型(Models).试图(Views)和控制器(Controllers),这三部分分别完成不同的功能以实现Web应用. 视图(View)代表用户交互界面 ...

  3. STL之deque用法详解

    C++ Deque(双向队列): Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用 ...

  4. Linux以外的开源操作系统大汇总

    开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用.编译和发布.自由和开放源代码软件中最著名的是Linux,它是一种类Unix的操作系统.Linux可安装在各种计算机硬件设备中,比如手机.平板 ...

  5. 高可用与负载均衡(8)之聊聊 LVS重要参数和优化以及监控

    preface 在明白LVS-DR模式的部署之后,我们看看LVS的几个重要参数: 如有问题,请联系我18500777133@sina.cn [root@localhost ~]# ls /proc/s ...

  6. iOS开发-二维码

    二维码 从ios7开始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk目前不支持64位处理器 生成二维码的步骤: 倒入CoreImage框架 通过滤镜CIFilter生成二维码 二维码的内 ...

  7. 生成N个二进制位的组合

    #include "stdafx.h" #include "stdlib.h" #include "stdio.h" #include &l ...

  8. Eclipse搭建Python开发环境+Python中文处理

    1.基本需求 1.Eclipse 集成开发环境下载 http://115.com/file/c2vz7io5    JDK6下载 http://115.com/file/c2vz7idq     2. ...

  9. c++编译错误提示及解决

    IntelliSense: #error 指令: Please use the /MD switch for _AFXDLL builds 修改设置:工程(Project)-> 属性(Prope ...

  10. Rime 鼠须管 配色方案

    android: name: "安卓/Android" author: "Patricivs ipatrickmac@me.com" text_color: 0 ...