在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
任何人都可以帮助我找到比这更优雅和高效的东西吗?
答案 0 :(得分:2)
首先查询视图并将结果放入表变量或临时表。在更新语句中使用该表,最后从临时表中执行select *
。