SQL存储过程来调用webservice
如果用存储过程来调用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的更多相关文章
- 存储过程中调用webservice
存储过程中调用webservice其实是在数据库中利用系统函数调用OLE. 1.查找webservice api 可得到MSSOAP.SoapClient. 2.查找API 接口可得到mssoapin ...
- SQL存储过程的调用及写法
调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...
- SQL 存储过程里调用另一个存储过程
由于创建了一个存储过程,并且要在另一个存储过程里调用这个存储过程所以在网上找了一下相关的代码,现在总结一下,防止以后还会用到 由于这次我写的存储过程只需要返回一个求和的结果,所以我使用了output ...
- SQL Server中调用WebService的实例
尊重原著作:本文转载自http://www.cnblogs.com/icycore/p/3532197.html 1.Ole Automation Procedures 服务器配置选项 当启用 OLE ...
- SQL——存储过程实例 调用带参数的过程(成绩输出)
create or replace procedure test_score(input in number,output out char) is begin then begin output : ...
- 在存储过程中调用WebService
1 create procedure usp_CallWebServices 2 ( 3 @parameter nvarchar(500)=null 4 ) 5 as 6 Declare @obj i ...
- SQL Server中调用WebService
首先要启用Ole Automation Procedures,使用sp_configure 配置时如果报错"不支持对系统目录进行即席更新",可以加上WITH OVERRIDE选项. ...
- SQL调用WebService接口
今天在做一个非常奇葩的东西.中间有个过程要在SQL触发器里面调用webservice接口.呵呵~ ALTER TRIGGER tgr_UpdateMemcached ON dbo.[User] AFT ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
随机推荐
- CMD.EXE中dir超长字符串缓冲区溢出原理学习
最近看逍遥的<网络渗透攻击与安防修炼>讲到CMD命令窗口的dir传超长字符串溢出的例子.自己实验了一下,的确会产生程序崩溃,但是具体什么原理没太详细说,这里做一下原理探究,权当学习笔记了. ...
- 用批处理批量编译多个解决方案(.sln)
批处理编译解决方案(.sln) @echo off path %SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\ echo 正在生成HelloWorl ...
- excel处理数字的时候避免自动转为double
帮同事解决了一个POI解析Excel的功能,就是他想读出单元格中的原始内容,但是poi在处理数字的时候会自动转换为double了,这样对于一些对1和1.00有严格区分的场景下,会出现问题.我看网上很多 ...
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: FINAL
Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...
- POJ1025 Department
POJ1025 是一道模拟题. 这题第一个障碍是现在少见的循环电梯 ('pater-noster' elevator) ”The building has `pater-noster' elevato ...
- hibernate基础增删查改简单实例
hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子 建一个web-project 我这里用了junit单元测试环境来进行增删查改的测试,别的 ...
- HTML5学习总结-11 IOS 控件WebView显示网页
一 加载外部网页 1.使用UIWebView加载网页 运行XCode 新建一个Single View Application . 2 添加安全消息 添加以下消息到项目的 Info.plist &l ...
- Diode -- Pay Attention to Parallel Connection
The above circuit is right. The two same resistors are integral. Because every diode is different, t ...
- 【原】整理的react相关的一些学习地址,包括 react-router、redux、webpack、flux
因为平时经常去网上找react相关的一些地址,找来找去很麻烦,所以自己整理了一下,不过前面部分不是我整理的, 是出自于:http://www.cnblogs.com/aaronjs/p/4333925 ...
- SVM支持向量机的高维映射与核函数-记录毕业论文2
上一篇博客将了在数据集线性可分的情况下的支持向量机,这篇主要记录如何通过映射到高维解决线性不可分的数据集和如何通过核函数减少内积计算量的理论思想. [5]径向基函数的核函数:https://www.q ...