sql >> データベース >  >> RDS >> Sqlserver

SP の結果セットに基づいて一時テーブルを動的に作成する

    簡単な答え:いいえ、それはできません。

    ストアド プロシージャから返される列の正確な数を使用して、一時テーブルを事前に宣言する必要があります。

    回避策は、永続テーブルを使用することです。たとえば、データベースに someSPResults という永続テーブルを作成できます。 someSP が異なる数の出力列を持つように変更されるたびに、展開の一部として someSPResults の形式を変更します。

    その後、次のいずれかを行うことができます:

    insert into dbo.someSPresults
    exec someSP
    

    または、someSP 内で、実行の通常の部分として結果を someSPresults テーブルに直接挿入することができます。 someSPresults テーブル内のどのレコードが someSP の各実行に由来するかを正確に特定する必要があるだけです。これは、ストアド プロシージャが同時に複数回起動され、大量のデータが someSPresults にダンプされる可能性があるためです。



    1. SQL Server IFとIIF():違いは何ですか?

    2. SQLクエリでの配列の使用

    3. 1つのクエリで子供と親をグループ化するにはどうすればよいですか?

    4. ExecuteNonQueryで影響を受ける行を取得する