sql 语句 select * from openquery 使用问题

sql 语句 select * from openquery 使用问题
悬赏分:5 - 离问题结束还有 14 天 23 小时
有远程链接服务器[testserver]
及表x_退货主表 退货单号='TTTS002-200809-001'
执行以下语句老是出错,请问到底要怎么改才不出错!
declare @day varchar(8)
set @day='20080109'
select * from openquery([testserver],'select * from x_退货主表 where substring(退货单号,9,8)=@day')

出错信息:
服务器: 消息 8180,级别 16,状态 1,行 8
Statement(s) could not be prepared.
服务器: 消息 137,级别 15,状态 1,行 8
Must declare the variable '@day'.
[OLE/DB provider returned message: 无法完成延迟准备。]

第1个回答  2012-02-23
declare @day varchar(8)
declare @s varchar(200)

set @day='20080109'
set @s='select * from x_退货主表 where substring(退货单号,9,8)='+@day
select * from openquery([testserver],@s)
第2个回答  2008-01-11
你应该把定义和select语句放到一个存储过程中,然后再调用该存储过程,而不是调用'select * from x_退货主表 where substring(退货单号,9,8)=@day'本回答被网友采纳
第3个回答  2016-07-05
select * from openquery([testserver],'select * from x_退货主表 where substring(退货单号,9,8)=:@day')
相似回答