这两天一直在做财务报表的整理、导出,其中大量用到了数据库中计算,又因为集团与子公司用到的数据库不是一个数据库,所以就用到了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)