【问题标题】: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