zoukankan      html  css  js  c++  java
  • 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;

    结果:

     

     

  • 相关阅读:
    【HDU
    写个shell脚本依次运行每个程序半小时
    Windows10 + Visual Studio 2017环境为C++工程安装使用ZMQ
    【UVALive
    【Gym
    【最短路算法】Dijkstra+heap和SPFA的区别
    【Gym 100812C】Story of Princess (走完图所有边)
    【C++】VS2015/VS2017连接Mysql数据库教程
    博客园设置Google-code-prettify渲染代码高亮
    【QML与C++混合编程】用QVariantList传递数组类型成员
  • 原文地址:https://www.cnblogs.com/straycats/p/12297617.html
Copyright © 2011-2022 走看看