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;

    结果:

     

     

  • 相关阅读:
    [转]scrapy中的request.meta
    Item Pipeline
    scrapy spider官方文档
    scrapy选择器主要用法
    scrapy 选择器官方文档
    【bzoj3514】Codechef MARCH14 GERALD07加强版 LCT+可持久化线段树
    【bzoj3813】奇数国 线段树
    【loj6177】「美团 CodeM 初赛 Round B」送外卖2 Floyd+状压dp
    【bzoj4499】线性函数 线段树
    【bzoj1018】[SHOI2008]堵塞的交通traffic 线段树区间合并+STL-set
  • 原文地址:https://www.cnblogs.com/straycats/p/12297617.html
Copyright © 2011-2022 走看看