更新和;从存储过程返回而不重复查询

时间:2011-06-16 11:44:46

标签: sql-server-2005 stored-procedures view

在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

任何人都可以帮助我找到比这更优雅和高效的东西吗?

1 个答案:

答案 0 :(得分:2)

首先查询视图并将结果放入表变量或临时表。在更新语句中使用该表,最后从临时表中执行select *