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;
结果: