在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


Top