【问题标题】:Openquery SQL how to check if exists?Openquery SQL如何检查是否存在?
【发布时间】:2011-09-26 18:05:09
【问题描述】:

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

【问题讨论】:

    标签: sql-server-2008 openquery


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-02
      • 2012-03-10
      • 2011-07-21
      • 2010-09-18
      • 2010-09-13
      • 2011-05-14
      相关资源
      最近更新 更多