从sql server 到Oracle使用openquery带参数查询

本文介绍了一种使用openquery进行跨库查询的方法,并讨论了如何在数据量较大时提高查询效率。通过具体示例展示了如何避免将参数直接放入openquery函数内,以及如何构造动态SQL来实现灵活查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     这两天一直在做财务报表的整理、导出,其中大量用到了数据库中计算,又因为集团与子公司用到的数据库不是一个数据库,所以就用到了openquery跨库查询

     因为财务报表计算比较复杂,所以这里就举一个简单地例子说明openquery使用:

    openquery函数不能传递参数,

    一种方法是将带参数的where限定条件放到openquery函数的外面,如 

    select * from OPENQUERY (linked_server, 'SELECT id FROM msgs') WHERE id=@id),但问题是如果数据量大的话,限定条件放在函数里面执行的效率更高,放在外面加重    了链接服务器的负担,等待返回结果的时间更长了,没有达到我想加快查询速度的问题。

    一种方法是将openquery语句放到一个字符串里面,但是这时候就要格外注意引号的问题,如 

DECLARE @Sql VARCHAR(1000)
set @sqlstr = 'select * from  openquery(ikangmis,select * from table where id='''+@id+''')
';
exec ( @sqlstr );
EXEC(@Sql)
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值