在SQL Server中利用Http获取钉钉后台数据
- 2023-08-21
- 296 人已阅读
本例是想在SQL Server中,定时获取钉钉后台数据信息,存储到本地数据库中。欲实现该功能,首先需要建立一个http的存储过程,然后通过调用该存储过程,获取相关数据。
一、创建请求http Get方式 存储过程
CREATE PROCEDURE [dbo].[PS_GET_HttpRequestData](
@URL varchar(500),
@status int=0 OUT,
@returnText varchar(2000)='' OUT
)
AS
BEGIN
DECLARE @object int,
@errSrc int
/*初始化对*/
EXEC @status = SP_OACreate 'Msxml2.ServerXMLHTTP.3.0', @object OUT
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
/*创建链接*/
EXEC @status= SP_OAMethod @object,'open',NULL,'GET',@URL
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
EXEC @status=SP_OAMethod @object,'setRequestHeader','Content-Type','application/x-www-form-urlencoded'
/*发起请求*/
EXEC @status= SP_OAMethod @object,'send',NULL
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
/*获取返回*/
EXEC @status= SP_OAGetProperty @object,'responseText',@returnText OUT
IF @status <> 0
BEGIN
EXEC SP_OAGetErrorInfo @object, @errSrc OUT, @returnText OUT
RETURN
END
END;
二、具体应用实例
在SQL Server 代理中,新建作业,使用下面的代码:
declare @dDate nvarchar(50),
@url nvarchar(200)
--更新员工钉钉ID
set @url = 'http://172.16.2.6:8081/dingding/update_userinfo'
Exec PS_GET_HttpRequestData @url
--获取出勤信息
set @dDate = CONVERT(nvarchar(10),DATEADD(dd,-1,getdate()),23)
set @url = 'http://172.16.2.6:8081/dingding/get_kaoqininfo?ddate='+@dDate
Exec PS_GET_HttpRequestData @url
--年假
set @url = 'http://172.16.2.6:8081/dingding/getleavetimebynames?ddate='+@dDate
Exec PS_GET_HttpRequestData @url