首页 > 数据库技术 > 详细

mssql通过链接服务器操作其他数据库

时间:2020-02-12 09:07:37      阅读:94      评论:0      收藏:0      [点我收藏+]

===============================================

 2020/2/12_第1次修改                       ccb_warlock

 

===============================================

最近几个月的业务中需要通过mssql来增改查其他数据库,下面的内容就是添加链接服务器的方法。

通过链接服务器连接oracle:https://www.cnblogs.com/straycats/p/12204053.html

通过链接服务器连接mssql:https://www.cnblogs.com/straycats/p/12208099.html

 

完成了连接方法后,接着就是如何实现对其他数据库进行增删改查。

 


下面的内容以连接的是另一个MSSql为例来写脚本。

技术分享图片

 

表结构如下:

技术分享图片

 

1)增

DECLARE @P_SQL VARCHAR(700);
DECLARE @P_ID VARCHAR(36) = NEWID();
DECLARE @P_NAME VARCHAR(20) = abc;
DECLARE @P_PWD VARCHAR(20) = 123456;

SET @P_SQL=INSERT INTO OPENQUERY(MYMSSQL,+‘‘‘‘+SELECT ID,NAME,PWD FROM Sso.DBO.USER_T‘‘‘+) VALUES(+‘‘‘‘+ @P_ID +‘‘‘‘+,+‘‘‘‘+ @P_NAME +‘‘‘‘+,+‘‘‘‘+ @P_PWD +‘‘‘‘+);

EXEC(@P_SQL);

结果:

技术分享图片

 

2)删

DECLARE @P_SQL VARCHAR(700);
DECLARE @P_ID VARCHAR(36) = 8CDC5984-75B1-4DAA-A9B4-0534D132B0D6;

SET @P_SQL = DELETE FROM OPENQUERY(MYMSSQL,+‘‘‘‘+SELECT * FROM Sso.DBO.USER_T WHERE ID = +‘‘‘‘‘‘+ @P_ID +‘‘‘‘‘‘+‘‘‘‘+);
EXEC(@P_SQL);

结果:

技术分享图片

 

3)改

DECLARE @P_SQL VARCHAR(700);
DECLARE @P_ID VARCHAR(36) = 8CDC5984-75B1-4DAA-A9B4-0534D132B0D6;
DECLARE @P_NAME VARCHAR(20) = def;
DECLARE @P_PWD VARCHAR(20) = 123;

SET @P_SQL=UPDATE OPENQUERY(MYMSSQL,+‘‘‘‘+SELECT NAME,PWD FROM Sso.DBO.USER_T WHERE ID = +‘‘‘‘‘‘+@P_ID+‘‘‘‘‘‘+‘‘‘‘+) SET NAME=+‘‘‘‘+ @P_NAME +‘‘‘‘+,PWD=+‘‘‘‘+ @P_PWD +‘‘‘‘;
EXEC(@P_SQL);

结果:

技术分享图片

 

4)查

直接看查询结果可以用下面的代码。

DECLARE @P_SQL VARCHAR(700);
DECLARE @P_DATAVARCHAR(20) = abc;

SET @P_SQL=SELECT TOP 1 * FROM OPENQUERY(MYMSSQL,+‘‘‘‘+SELECT ID,NAME,PWD FROM Sso.DBO.USER_T WHERE NAME =  + ‘‘‘‘‘‘ + @P_DATA + ‘‘‘‘‘‘+ ‘‘‘‘ + );
EXEC(@P_SQL);

结果:

技术分享图片

 

但是像存储过程执行业务时,我们需要将结果集合存下来后,再进行业务处理,那么只要像下面这样使用临时表就可以实现。

DECLARE @P_SQL VARCHAR(700);
DECLARE @P_DATA    VARCHAR(20) = abc;

DECLARE @TMP_USER_T TABLE(
    ID VARCHAR(36) NOT NULL,
    NAME VARCHAR(20) NOT NULL,
    PWD VARCHAR(20) NOT NULL
);

SET @P_SQL=SELECT TOP 1 * FROM OPENQUERY(MYMSSQL,+‘‘‘‘+SELECT ID,NAME,PWD FROM Sso.DBO.USER_T WHERE NAME =  + ‘‘‘‘‘‘ + @P_DATA + ‘‘‘‘‘‘+ ‘‘‘‘ + );
INSERT INTO @TMP_USER_T    EXEC(@P_SQL);

SELECT * FROM @TMP_USER_T;

结果:

技术分享图片

 

 

mssql通过链接服务器操作其他数据库

原文:https://www.cnblogs.com/straycats/p/12297617.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!