リンクサーバーを介して他のオペレーティングMSSQLデータベース

===============================================

 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の VARCHAR700 )。
DECLAREの @P_IDの VARCHAR36=  CHANGE ()。
DECLAREの @P_NAMEの VARCHAR20=  ' ABC ' DECLAREの @P_PWDの VARCHAR20=  ' 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  VARCHAR700 )。
DECLARE  @P_ID  VARCHAR36=  ' 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;

结果:

 

 

おすすめ

転載: www.cnblogs.com/straycats/p/12297617.html