[SQL Server]一時テーブル(テンポラリテーブル)の作り方

[スポンサードリンク]

ストアドプロシージャ内で一時的に作ることができる一時テーブル(テンポラリテーブル)について

グローバル一時テーブルとローカル一時テーブル

グローバル一時テーブル

概要

グローバル一時(テンポラリ)テーブルは、セッションが続いている間生きており、セッション内の別のストアドプロシージャからも操作が可能である。

例えばストアドプロシージャAが「グローバル一時テーブルA」を作成した場合。

その後、複数のプログラムがストアドプロシージャAを実行した場合や別のストアドプロシージャBが「グローバル一時テーブルA」を使用している場合、「グローバル一時テーブルA」を使用するストアドプロシージャの実行が全て終わり、セッションが全て無くなったときに「グローバル一時テーブルA」は削除される。

グローバル一時テーブルの作成方法

グローバル一時テーブルの名前は「##」から始まる。

注意事項

グローバルなので、ストアドプロシージャや動的SQLが実行されるときにもう既にテーブルが存在しているかもしれない。
その場合はエラーとなる。

メッセージ 2714、レベル 16、状態 6、行 2
データベースに ‘##WorkTable’ という名前のオブジェクトが既に存在します。

このエラーを防ぐためにCREATEの前のIF文で存在確認をしておく必要がある。

ローカル一時テーブル

概要

ローカル一時(テンポラリ)テーブルは、それを作成したストアドプロシージャや動的SQLのみアクセスができる。

「ローカル一時テーブルA」を作成する「ストアドプロシージャA」が複数呼び出され実行されても。

それぞれのセッション(ストアドプロシージャA)用の独立した「ローカル一時テーブルA」が作成され、それぞれの作成元の処理が終わるまで生きている。

ローカル一時テーブルの作成方法

ローカル一時テーブルの名前は「#」から始まる。

注意事項

ローカル一時テーブルはそれを作成したストアドプロシージャでのみ操作ができる。

残ったままのローカル一時テーブルを再利用することはないため、冒頭の処理でテーブルが存在したら削除して作りなおす必要がある。

[スポンサードリンク]

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


ピックアップ記事

  1. 例えば、商品の色が登録されているもの、登録されていないものなどを取得する場合 (さらに&hell…
  2. dpiAwareの設定を変える。 (さらに…)…
  3. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…
  4. SQLで月の末尾を求める方法。 (さらに…)…
  5. 割り算に必須な0除算回避 (さらに…)…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る