2010-09-24 119 views
1

我試圖在微軟SQL運行下面的TSQL語句2008逃脫引號內引號TSQL字符串

DECLARE @tmpMessage nvarchar(max) 

SET @tmpMessage = 'select * from openquery(GLive,''select ID from Links WHERE [HREF] LIKE ''test'''')'; 

exec sp_executesql @tmpMessage 

上面的代碼不工作,因爲單引號前測試關閉周圍的主要報價從鏈接第二個SELECT語句選擇ID ....

是的,我已經把我的發言在第一串之前執行它,因爲OPENQUERY功能不會讓我做事端像

select * from openquery(GLive,'select ID from Links WHERE [Href] LIKE ''' + @Var + ''''') 

任何suggesstions將不勝感激。

在此先感謝。

回答

4

這裏是我,每當我在OPENQUERY語句處理變量鏈接的服務器使用模板:

DECLARE @UniqueId int 
, @sql varchar(500) 
, @linkedserver varchar(30) 
, @statement varchar(600) 

SET @UniqueId = 2 

SET @linkedserver = 'LINKSERV' 
SET @sql = 'SELECT DummyFunction(''''' + CAST(@UniqueId AS VARCHAR(10))+ ''''') FROM DUAL' 
SET @statement = 'SELECT * FROM OPENQUERY(' + @linkedserver + ', ' 
SET @Statement = @Statement + '''' + @SQL + ''')' 
EXEC(@Statement) 
+0

是不錯的主意,它拆分成2串後,由於它的工作原理 – 2010-09-24 21:45:51

0

你也可以嘗試一下QUOTENAME命令。

+0

僅適用於以字符串<= 128個字符AFAIK。 – 2010-09-24 12:44:38

+0

還挺爲我工作移除「[」和「]」的QUOTENAME功能添加,謝謝 – 2010-09-24 13:05:13