2011-09-26 7 views
0

나는 새 레코드를 삽입하지 않으면 레코드가 존재하는지 확인하기 위해 SQL OPENQUERY을 사용하고 있습니다. 여기 Openquery SQL 존재 여부를 확인하는 방법은 무엇입니까?

는 지금까지

DECLARE @sql VARCHAR (8000) 
DECLARE @Id VARCHAR(20) 

SET @Id= '31124' 

SET @sql = ' 
SELECT * FROM OPENQUERY 
(
    SERVERNAME, 
    '' 
    SELECT Name FROM table WHERE Id= ''''' + @Id + ''''' 
    '' 
)' 
EXEC (@sql) 

답변

2
DECLARE @sql VARCHAR (8000) 
DECLARE @Id VARCHAR(20) 

SELECT @Id= '31124' 

SELECT @sql = 
' 
IF EXISTS 
(
    SELECT * FROM OPENQUERY 
    (
     SERVERNAME, 
     ''SELECT Name FROM table WHERE Id= ''''' + @Id + ''''''' 
    ) 
) 
BEGIN 
    UPDATE OPENQUERY 
    (
     SERVERNAME, 
     ''SELECT Name FROM table WHERE Id= ''''' + @Id + ''''''' 
    ) 
    SET Name = ''NewName'' 
ELSE 
    INSERT OPENQUERY 
    (
     SERVERNAME, 
     ''SELECT Name FROM table'' 
    ) 
    VALUES 
    (
     ''NewName'' 
    ) 
END 
' 

EXEC (@sql) 

이 당신이 EXEC를 사용하는 몇 가지 특정 요구 사항이없는 한, 당신이 그것을 필요로하지 않는 것입니다.

DECLARE @Id VARCHAR(20) 

SELECT @Id= '31124' 

IF EXISTS 
(
    SELECT * FROM OPENQUERY 
    (
     SERVERNAME, 
     'SELECT Name FROM table WHERE Id= ''' + @Id + '''' 
    ) 
) 
BEGIN 
    UPDATE OPENQUERY 
    (
     SERVERNAME, 
     'SELECT Name FROM table WHERE Id= ''' + @Id + '''' 
    ) 
    SET Name = 'NewName' 
ELSE 
    INSERT OPENQUERY 
    (
     SERVERNAME, 
     'SELECT Name FROM table' 
    ) 
    VALUES 
    (
     'NewName' 
    ) 
END 
관련 문제