SQL Server の一時テーブルとカーソルの使用法の概要

巴扎黑
リリース: 2017-05-21 18:38:27
オリジナル
1370 人が閲覧しました

この記事では、主に SQL Server の一時テーブルとカーソルの使用方法について概要を紹介します。必要な方は参考にしてください。

1. 一時テーブル

一時テーブルは永続テーブルに似ています。 tempdb. そうでない場合は、再度使用すると自動的に削除されます。
一時テーブルにはローカルとグローバルの 2 種類があります

2 つの比較:

ローカル一時テーブルの名前は記号 (#) で始まります
現在のユーザー接続にのみ表示されます
ユーザー インスタンスが切断されると、それは自動削除です
グローバル一時テーブルの名前は記号 (##) で始まります
すべてのユーザーに表示されます
テーブルを参照するすべてのユーザーが切断されると、自動的に削除されます
実際、ローカル一時テーブルは tempdb 内で一意の名前を持ちます
たとえば、sa を使用して 1 つのクエリ アナライザーにログインし、次に sa を使用して別のクエリ アナライザーにログインします

両方のクエリ アナライザーで次のステートメントを許可します:


use pubs
go
select * into #tem from jobs
ログイン後にコピー

2 人のユーザーに対してそれぞれ 2 つ作成されました 部分的な一時テーブル
以下のクエリ文からわかります


SELECT * FROM [tempdb].[dbo].[sysobjects] 
where xtype='u'
ログイン後にコピー

一時テーブルの存在を確認します:


if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

特別なヒント:
1.動的SQLステートメントで作成されたローカル一時テーブルは、ステートメントの実行後に自動的に削除されます
そのため、次のステートメントは結果セットを取得しません


exec('select * into #tems from jobs')
select * from #tems
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2。ストアドプロセスで使用される一時テーブルは、プロセスの完了後に自動的に削除されますが、システムにとって有益であるため、明示的に削除することをお勧めします。カーソル
カーソルには、ローカル カーソルとグローバル カーソルの 2 種類があります。

ローカル カーソル: 宣言フェーズでのみ使用されます。


存在を判断するために、トリガーの外部で使用できます。

if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u'
ログイン後にコピー
ログイン後にコピー

一時テーブルの存在を確認するには:


if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

特別なヒント:
1.動的SQLステートメントで作成されたローカル一時テーブルは、ステートメントの実行後に自動的に削除されます

そのため、次のステートメントは結果セットを取得しません



exec('select * into #tems from jobs')
select * from #tems
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

2。ストアドプロセスで使用される一時テーブルは、プロセスの完了後に自動的に削除されますが、システムにとって有益であるため、明示的に削除することをお勧めします。カーソル
カーソルには、ローカル カーソルとグローバル カーソルの 2 種類があります。

ローカル カーソル: 宣言フェーズでのみ使用されます。


存在を判断するために、トリガーの外部で使用できます。


if CURSOR_STATUS('global','游标名称') =-3 and CURSOR_STATUS('local','游标名称') =-3 
begin 
 print 'not exists' 
end
SELECT * FROM [tempdb].[dbo].[sysobjects] where xtype='u'
ログイン後にコピー
ログイン後にコピー

一時テーブルの存在を確認するには:




if object_id('tempdb..#tem') is not null 
begin 
 print 'exists' 
end 
else 
begin 
 print 'not exists' 
end
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

特別なヒント:

1.動的SQLステートメントで作成されたローカル一時テーブルは、ステートメントの実行後に自動的に削除されます
そのため、次のステートメントは結果セットを取得しません


exec('select * into #tems from jobs')
select * from #tems
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
2。ストアドプロセスで使用される一時テーブルは、プロセスの完了後に自動的に削除されますが、システムにとって有益であるため、明示的に削除することをお勧めします。カーソル

カーソルには、ローカル カーソルとグローバル カーソルの 2 種類があります。
ローカル カーソル: 宣言フェーズでのみ使用されます。

存在を確認するために:


りー

以上がSQL Server の一時テーブルとカーソルの使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート