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;

    结果:

     

     

  • 相关阅读:
    Java对象的生命周期与作用域的讨论(转)
    [置顶] Oracle学习路线与方法
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
  • 原文地址:https://www.cnblogs.com/straycats/p/12297617.html
Copyright © 2011-2022 走看看