在SQL
Server中创建好基于MYSQL的链接服务器后,由于OPENQUERY函数不接受其参数的变量,因此,在处理一些需要带变量的查询时,该如何处理呢?下面来看看详细的处理过程:
本例为带参数变量的查询处理过程,其他的插入、更新和删除等过程类似,只做简单修改即可。
declare @dt datetime , @begin_dt varchar(32) ,
@end_dt varchar(32)
declare @num1 int
declare @num2 int
select @dt= dateadd(dd , -1, getdate())
select @begin_dt= convert(varchar(32) ,
convert(varchar(10),@dt,120)+' 00:00:00',121)
select @end_dt=
convert(varchar(32),
convert(varchar(10),@dt,120)+' 23:59:59.997',121)
--select @begin_dt,@end_dt
declare @sql1 nvarchar(2000),@sql2 nvarchar(2000)
set @sql1='select buy_num from test.t_user_buy_log
where log_dt between '''+@begin_dt+''' and '''+@end_dt+''''
set @sql1='select @num1=isnull(sum(buy_num),0)
from openquery(MyTest,'''+replace(@sql1,'''','"')+''')'
--select @sql1
exec sp_executesql @sql1,N'@num1 int
output',@num1 output
--select @num1
set @sql2='select sell_num from
test.t_user_sell_log where log_dt between '''+@begin_dt+''' and '''+@end_dt+''' and sell_type = 101
and user_id >= 10000'
set @sql2='select
@num2=isnull(sum(sell_num),0) from
openquery(MyTest,'''+REPLACE(@sql2, '''', '"')+''')'
--select @sql2
exec sp_executesql @sql2,N'@num2 int
output',@num2 output
select '用户购买数:', @num1 , '用户销售数:', @num2,
'误差:', abs(@num1 - @num2)
加载中,请稍候......