私は、ストアドプロシージャを使用して、ストアドプロシージャからデータを早期に返し、その後処理を続行できるようにしたいと考えています。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