===============================================
2分の2020 / 12_最初の編集 ccb_warlock
===============================================
ここ数カ月の間にビジネスはMSSQLを介してデータベースに他の追加や変更をチェックする必要がある、以下の内容は、リンクサーバーを追加する方法です。
:Oracleは、リンクサーバーを介して接続さhttps://www.cnblogs.com/straycats/p/12204053.html
リンクサーバー経由MSSQL接続:https://www.cnblogs.com/straycats/p/12208099.html
接続方法の完了後、そしてそれは他のデータベースのCRUDを達成する方法です。
以下の内容は、スクリプトを書くために別のMSSQL例に接続されています。
次のようにテーブルの構造は次のとおりです。
1)増加
DECLAREの @P_SQLの VARCHAR(700 )。 DECLAREの @P_IDの VARCHAR(36)= CHANGE ()。 DECLAREの @P_NAMEの VARCHAR(20)= ' ABC ' 。 DECLAREの @P_PWDの VARCHAR(20)= ' 123456 ' 。 SET @P_SQL = ' INSERT INTO OPENQUERY(MYMSSQL、' + '' + ' SELECT ID、NAME、Sso.DBO.USER_T FROM PWD ' '' + ' )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 = ' OPENQUERY(MYMSSQL FROM DELETE、' + '' + ' 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;
结果: