我有一个无法修改的存储过程,在有人建议我重写存储过程或将存储过程内部的查询添加到函数中之前,我要强调这一点。
该程序位于另一个我们访问权限非常有限的数据库上;所以我想做的是以某种方式将存储过程包装在一个查询、函数或存储过程中,这将允许我从返回的数据中选择前 N 行。
理想情况下,我可以调用类似...
DECLARE @ForeName varchar(50)
DECLARE @Surname varchar(50)
DECLARE @DOB datetime
DECLARE @Sex varchar(1)
SET @Surname = 'Smith'
SELECT TOP 10 (
EXECUTE @RC = [Some_Other_Database].[dbo].[sp_search_demographics]
,@ForeName
,@Surname
,@DOB
,@Sex
)
GO
编辑:(我还应该注意,存储过程返回一个包含行数和行数的参数)
编辑2:我还应该注意我正在使用 MS SQL Server 2008 R2
我知道这绝不是正确的,有没有办法做这样的事情?目前,对于模糊查询,我们返回了数千行;这大大降低了服务器的速度。
我已经为解决方案做了一些谷歌搜索和堆栈溢出,但不幸的是,我能找到的所有建议都涉及修改存储过程。