2

SQL Server 2008でSELECTクエリをパラメータとしてに渡したい。 そのspでそのクエリを実行し、一時テーブルに格納してから、その一時テーブルの2フィールドにカーソルをループさせたい。STORED PROCEDURE

では、どうすればそれができますか?

主にこの部分:execute that query and store to temp table

編集 :

クエリ:

SELECT * FROM SomeView WHERE COL1 = '1' AND COL = GETDATE() ORDER BY COL0

SomeViewには多くのフィールドがありますが、2つだけが必要です:COLS1、CLOS2その2つのフィールドのみでCURSORをループしたい

4

1 に答える 1

1

動的SQLクエリからのクエリ結果を一時テーブルに保存する方法は次のとおりです。

DECLARE @sql NVARCHAR(1000)
SET @sql = 'SELECT COL1, COL2 FROM SomeView WHERE COL1 = ''1'' AND COL = GETDATE() ORDER BY COL0'

CREATE TABLE #temp(col1 <yourDataType>, col2 <yourDataType>)
INSERT INTO #temp EXEC sp_executesql @sql

ただし、カーソルの代わりを検討する必要があります。カーソルはパフォーマンスを低下させます。カーソルは行ごとに動作しますが、クエリはセットベースの動作を行います。SQL Serverは、セットベースのデータアクセス用に最適化されています。クエリを記述できる場合は、カーソルを使用しないでください。

于 2013-02-08T08:38:09.800 に答える