Sql server 2008 Openquery SQL如何检查是否存在?

Sql server 2008 Openquery SQL如何检查是否存在?,sql-server-2008,openquery,Sql Server 2008,Openquery,我使用sqlOPENQUERY检查记录是否存在,如果不存在,则插入一条新记录 这是我到目前为止所拥有的 DECLARE @sql VARCHAR (8000) DECLARE @Id VARCHAR(20) SET @Id= '31124' SET @sql = ' SELECT * FROM OPENQUERY ( SERVERNAME, '' SELECT Name FROM table WHERE Id= ''''' + @Id + ''''' '' )'

我使用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)

除非您有使用
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
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