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

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

 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;

结果:

 

 

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