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;

結果:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM