Openquery SQL, как проверить, если существует? - PullRequest
0 голосов
/ 26 сентября 2011

Я использую sql OPENQUERY, чтобы проверить, существует ли запись, передавая параметр, обновив его, если нет, вставить новую запись.

Вот что у меня есть

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)

1 Ответ

2 голосов
/ 26 сентября 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...