===============================================
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;
結果: