0

まず、ms SQL サーバー 2012 を使用しています。文字列としてプロシージャに渡された文字列値に基づいてテーブルを使用しようとしています。クエリを作成するときに文字列をテーブル名として使用できないことがわかったので、それを回避する方法を見つけようとしています。私が夢中になっている唯一のリードは、動的 SQL を使用していることですが、これを機能させる方法もわかりません。ここに私が持っているものがあります:

DECLARE @q AS NVARCHAR(MAX)
SET @q = 'SELECT * FROM ' + @tableName
DECLARE #tableCopy AS EXECUTE(@q)

実行された@qを#tableCopyに取得するにはどうすればよいですか? または、テーブル名を文字列として知っているだけの場合、テーブルにアクセスするより良い方法はありますか?

4

1 に答える 1

0

一時テーブルを作成してから、動的 SQL 内のそのテーブルに挿入できます。ここに例があります: http://smehrozalam.wordpress.com/2009/10/14/t-sql-using-result-of-a-dynamic-sql-query-in-a-variable-or-table/

残念ながら、スキーマを知る必要があります。以下は機能しませ

declare @query varchar(max) = 
'select * into #t from table'
EXEC(@query) 
select * FROM #t
于 2013-07-25T18:48:28.293 に答える