MS SQL SERVER操作API的GET和POST存储过程
时间:2021-08-30
本文章向大家介绍MS SQL SERVER操作API的GET和POST存储过程,主要包括MS SQL SERVER操作API的GET和POST存储过程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上个星期,为了连接DingDing,查找了诸多资料和朋友的指点与帮助。
整理好2个存储过程,Get和Post:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[usp_Util_HttpGet] @Url NVARCHAR(4000), @ResponseText NVARCHAR(MAX) OUTPUT AS BEGIN SET NOCOUNT ON DECLARE @ErrMsg VARCHAR(5000) DECLARE @token INT,@result INT,@returnTextErr VARCHAR(200),@HttpStatus VARCHAR(200) EXECUTE @result = sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @token OUT IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '初始化对象失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token, 'open', NULL, 'GET', @Url,'false' IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '创建连接失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token, 'setRequestHeader', NULL,'Content-Type', 'application/json; charset=UTF-8' IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '设置RequestHeader属性失败,'+ @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token, 'send', NULL, '' IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '发送请求头失败,'+ @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sys.sp_OAGetProperty @token, 'Status', @HttpStatus OUT IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '读取[Status]属性值失败,'+ @ErrMsg + ISNULL(@returnTextErr,'') RAISERROR(@ErrMsg,16,-1) END IF @HttpStatus <> 200 BEGIN SET @ErrMsg ='访问错误,http状态代码,'+ @HttpStatus +'' RAISERROR(@ErrMsg,16,1) END DECLARE @xml TABLE([ResponseText] NVARCHAR(MAX)) INSERT INTO @xml([ResponseText]) EXECUTE @result = dbo.sp_OAGetProperty @token, 'responseText' SELECT @ResponseText = [ResponseText] FROM @xml IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '获取回复报文失败:' + ISNULL(@ErrMsg, '') + ','+ ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OADestroy @token IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '释放资源对象,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END END
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[usp_Util_HttpPost] @Url NVARCHAR(4000), @PostData NVARCHAR(4000) AS BEGIN SET NOCOUNT ON DECLARE @ErrMsg VARCHAR(5000) DECLARE @token INT,@result INT,@returnTextErr VARCHAR(200),@HttpStatus VARCHAR(200) EXECUTE @result = sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @token OUT IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '初始化对象失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token, 'open', NULL, 'POST', @Url,'false' IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '创建连接失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token, 'setRequestHeader', NULL,'Content-Type', 'application/json; charset=UTF-8' IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '设置RequestHeader属性失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OAMethod @token,'send', NULL, @PostData IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '发送请求头失败,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sys.sp_OAGetProperty @token, 'Status', @HttpStatus OUT IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '读取[Status]属性值失败,' + @ErrMsg + ISNULL(@returnTextErr,'') RAISERROR(@ErrMsg,16,-1) END IF @HttpStatus <> 200 BEGIN SET @ErrMsg ='访问错误,http状态代码,'+@HttpStatus+'' RAISERROR(@ErrMsg,16,1) END IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '获取回复报文失败:' + ISNULL(@ErrMsg, '') + ','+ ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END EXECUTE @result = sp_OADestroy @token IF @result <> 0 BEGIN EXECUTE sp_OAGetErrorInfo @token, @ErrMsg OUT, @returnTextErr OUT SET @ErrMsg = '释放资源对象,' + @ErrMsg + ISNULL(@returnTextErr, '') RAISERROR(@ErrMsg,16,-1) END END
原文地址:https://www.cnblogs.com/insus/p/15205077.html
- 改变开发者编码思维的六种编程范式
- PostgreSQL并行查询是个什么“鬼"?
- 想弄一台简单的区块链服务器?来这里看看!!
- NNabla:索尼开源的一款神经网络框架
- 黑客与C语言
- 浅谈分布式事务
- 漫谈千亿级数据优化实践:一次数据优化实录
- Facebook开源游戏平台ELF:一个用于实时战略游戏研究的轻量级平台
- 用不到50行的Python代码构建最小的区块链
- 学习笔记CB002:词干提取、词性标注、中文切词、文档分类
- 深入浅出 Retrofit,这么牛逼的框架你们还不来看看?
- 用Python从零开始构建反向传播算法
- 备战CDA数据分析竞赛!Kaggle赛题大揭秘
- 如何用Python将时间序列转换为监督学习问题
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Dinosaurus_Island_Character_level_language_model_final_v3b
- Trigger_word_detection_v1a
- 《深入浅出SQL》问答录(二)
- 《深入浅出SQL》问答录(四)
- 《深入浅出MySQL》问答录(五)
- 《深入浅出SQL》问答录(七)
- 《深入浅出SQL》问答录(八)
- Improvise_a_Jazz_Solo_with_an_LSTM_Network_v3a-2
- 《深入浅出SQL》问答录(九)
- 《深入浅出SQL》问答录(十)
- Operations_on_word_vectors_v2a
- LeetCode精选好题(一)
- LeetCode精选好题(二)
- 【leetcode两题选手】算法类题目(7.26)
- MySQL见闻录 -- 入门之旅(一)