加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

OPENQUERY中使用变量进行查询

(2014-02-25 11:19:23)
分类: 数据库学习

    在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)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有