Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 更新及;从存储过程返回,无需重复查询_Sql Server 2005_Stored Procedures_View - Fatal编程技术网

Sql server 2005 更新及;从存储过程返回,无需重复查询

Sql server 2005 更新及;从存储过程返回,无需重复查询,sql-server-2005,stored-procedures,view,Sql Server 2005,Stored Procedures,View,在SQLServer2005中定义了一个视图之后,我想编写一个存储过程,根据一些排序标准从该视图返回前n个元素。然而,在返回它们之前,我必须对这些结果进行一些更新,但是如果不查询两次视图,我就不知道如何进行更新。。。我的解决办法是 CREATE PROCEDURE UpdateAndReturn AS UPDATE TableToUpdate SET Field = @Something WHERE IDRef IN (SELECT TOP (n) ID FROM View ORDE

在SQLServer2005中定义了一个视图之后,我想编写一个存储过程,根据一些排序标准从该视图返回前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

有人能帮我找到比这更优雅、更高效的吗?

先查询视图,然后将结果放入表变量或临时表中。在update语句中使用该表,最后从temp表中选择*