----******把查询的结果集放到游标中,然后根据游标的状态循环读取********
CREATE PROCEDURE Syncdata_Hypertesionperson
AS
BEGIN
SET NOCOUNT ON;
declare @yks_id varchar(50)
declare @jk_id varchar(50)
-- ************************************修改的操作
DECLARE CUR_JK_HP CURSOR FOR
select yks.shoufid from dbo.gcv_hypertensionperson_new yks
full join dbo.GK_PersonHypeInfo jk on jk.PHID=yks.shoufid
where --cast(yks.Modify_time as datetime) >= cast((case when jk.SynsDate is null then '2001-01-01' else jk.SynsDate end) as datetime) and
yks.shoufid=jk.PHID and yks.Modify_time>jk.UpdateTime;
OPEN CUR_JK_HP;
FETCH CUR_JK_HP INTO @yks_id;
WHILE @@FETCH_STATUS=0
BEGIN
delete from dbo.GK_PersonHypeInfo where PHID=@yks_id;
exec Syncdata_insert_Hypertesionperson @yks_id;
FETCH NEXT FROM CUR_JK_HP INTO @yks_id;
END;
-- 4.关闭游标
CLOSE CUR_JK_HP;
-- 5.释放游标
DEALLOCATE CUR_JK_HP;
--**********************************新增的操作 **********/
DECLARE CUR_JK_HP2 CURSOR FOR
select yks.shoufid from dbo.gcv_hypertensionperson_new yks where yks.shoufid not in (select jk.PHID from dbo.GK_PersonHypeInfo jk)
OPEN CUR_JK_HP2;
FETCH CUR_JK_HP2 INTO @yks_id
WHILE @@FETCH_STATUS=0
BEGIN
exec Syncdata_insert_Hypertesionperson @yks_id;
FETCH NEXT FROM CUR_JK_HP2 INTO @yks_id;
END;
CLOSE CUR_JK_HP2;
DEALLOCATE CUR_JK_HP2;
END;
CREATE PROCEDURE Syncdata_Hypertesionperson
AS
BEGIN
SET NOCOUNT ON;
declare @yks_id varchar(50)
declare @jk_id varchar(50)
-- ************************************修改的操作
DECLARE CUR_JK_HP CURSOR FOR
select yks.shoufid from dbo.gcv_hypertensionperson_new yks
full join dbo.GK_PersonHypeInfo jk on jk.PHID=yks.shoufid
where --cast(yks.Modify_time as datetime) >= cast((case when jk.SynsDate is null then '2001-01-01' else jk.SynsDate end) as datetime) and
yks.shoufid=jk.PHID and yks.Modify_time>jk.UpdateTime;
OPEN CUR_JK_HP;
FETCH CUR_JK_HP INTO @yks_id;
WHILE @@FETCH_STATUS=0
BEGIN
delete from dbo.GK_PersonHypeInfo where PHID=@yks_id;
exec Syncdata_insert_Hypertesionperson @yks_id;
FETCH NEXT FROM CUR_JK_HP INTO @yks_id;
END;
-- 4.关闭游标
CLOSE CUR_JK_HP;
-- 5.释放游标
DEALLOCATE CUR_JK_HP;
--**********************************新增的操作 **********/
DECLARE CUR_JK_HP2 CURSOR FOR
select yks.shoufid from dbo.gcv_hypertensionperson_new yks where yks.shoufid not in (select jk.PHID from dbo.GK_PersonHypeInfo jk)
OPEN CUR_JK_HP2;
FETCH CUR_JK_HP2 INTO @yks_id
WHILE @@FETCH_STATUS=0
BEGIN
exec Syncdata_insert_Hypertesionperson @yks_id;
FETCH NEXT FROM CUR_JK_HP2 INTO @yks_id;
END;
CLOSE CUR_JK_HP2;
DEALLOCATE CUR_JK_HP2;
END;
本文介绍了一个使用T-SQL实现的过程,该过程通过游标来同步两个不同系统间的高血压患者信息。主要涉及删除旧数据并插入新数据的逻辑,确保目标系统上的数据是最新的。

296

被折叠的 条评论
为什么被折叠?



