我有一个存储过程,我希望通过从存储过程中提前返回数据并随后允许它继续处理,从而加快速度。T-SQL返回结果并继续处理
基本上现在我有一些像这样:
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
@someargshere
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
UPDATE lastAccessedTime = GETUTCDATE() WHERE based on someargs;
SELECT some fields WHERE based on someargs;
END
我并不真正关心什么lastAccessedTime对于SELECT
声明,但我发现返回的结果集行是唯一的出路最后做SELECT
,因为我发现所有文档都说RETURN
只需要一个整数表达式。我希望尽早返回结果,以便我的应用程序可以获得绝对最快的响应时间,以便在继续处理的同时让服务器执行更新。所以我想做点类似于
SELECTT.....
RETURN results to app
UPDATE after connection has sent results
这是可能的还是有更好的方法呢?
你不太清楚你想在SP中完成什么,但是假设你想用新的'lastAccessedTime'标记一组行,然后从这些行中返回数据,你可以通过使用[UPDATE]上的''OUTPUT'](https://msdn.microsoft.com/en-us/library/ms177564.aspx)子句将数据从受影响的行保存到临时表中。临时表中的'SELECT'将返回结果。您的当前设计,无需添加事务,允许其他用户更新“UPDATE”和“SELECT”之间的行,“OUTPUT”会阻止某些行。 – HABO