この記事では、主に 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
存在を判断するために、トリガーの外部で使用できます。
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 種類があります。
ローカル カーソル: 宣言フェーズ中にのみ使用されます。
存在を判断するために:
りー
以上がSQL Server の一時テーブルとカーソル インスタンスの使用法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。