【发布时间】:2015-09-28 12:14:00
【问题描述】:
如何使用表变量作为 OPENQUERY 的参数
类似的东西:
DECLARE @TSQL VARCHAR(8000)
DECLARE @VAR TABLE (VAR1 VARCHAR (2))
INSERT INTO @VAR values ('CA'),('OR') ,('WA')
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + (SELECT VAR1 FROM @VAR)+ ''''''')'
EXEC (@TSQL)
【问题讨论】:
-
有什么理由不这样做:
...WHERE state IN ('CA,'OR','WA')...? -
我完全支持你@Amit。如果你想为动态 SQL 代码使用参数,你应该使用
sp_executesql。带参数调用 sp_executesql 的示例:msdn.microsoft.com/en-us/library/ms188001(v=sql.120).aspx -
嗨 Amit 和 CeOnSql,提供的示例是一个简化。真正的查询在 Crystal Report 中,这些值不会是固定值。报表的用户将在运行时提示选择这些值,因此它们不能被硬编码。
标签: sql sql-server tsql parameters openquery