@tableName
テーブル変数は、スクリプトが実行されている間のみ有効です。つまり、テーブル変数はセッションレベルのオブジェクトのみです。
これをテストするには、SQL Server Management Studioで2つのクエリエディターウィンドウを開き、同じ名前で構造が異なるテーブル変数を作成します。あなたはアイデアを得るでしょう。したがって、@tableName
オブジェクトは一時的なものであり、データの内部処理に使用され、実際のデータベース構造には影響しません。
一時的に使用するために作成できる別のタイプのテーブルオブジェクトがあります。これらは#tableName
、物理テーブルの同様のcreateステートメントのように宣言されたオブジェクトです。
Create table #test (Id int, Name varchar(50))
このテーブルオブジェクトが作成され、一時データベースに保存されます。最初のオブジェクトとは異なり、このオブジェクトはより便利で、大きなデータを格納でき、トランザクションなどに参加できます。これらのテーブルは、接続が開かれるまで存続します。再作成する前に、スクリプトに従って作成したオブジェクトを削除する必要があります。
IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test
これが理にかなっていることを願っています!