2011-06-16 25 views
1

在SQL Server 2005中定义了一个视图后,我想要编写一个存储过程,根据某些排序条件从此视图返回顶部的n元素。然而,在返回他们之前,我必须做一些更新,这些结果,但我无法弄清楚如何做到这一点,而不查询视图两次...我的解决办法是在没有重复查询的情况下从存储过程更新并返回

CREATE PROCEDURE UpdateAndReturn 

AS 

    UPDATE TableToUpdate SET Field = @Something WHERE IDRef IN (SELECT TOP (n) ID FROM View ORDER BY This, That) 

    SELECT TOP (n) * FROM View ORDER BY This, That 

GO 

谁能帮助我找到什么比这更优雅高效?

回答

2

先查看视图并将结果放到表变量或临时表中。在更新声明中使用该表,最后从临时表中执行select *

相关问题