stored procedure
一時テーブルを作成している内部があります。私のvb
コードは、このストアド プロシージャを実行します。
vb6
sp実行後に一時テーブルのデータにアクセスすることはできますか?
stored procedure
一時テーブルを作成している内部があります。私のvb
コードは、このストアド プロシージャを実行します。
vb6
sp実行後に一時テーブルのデータにアクセスすることはできますか?
グローバル スコープの一時テーブルを使用します (それらは##
ではなく で始まります#
)。これらはセッション間で共有されます。それらを作成したセッションが終了し、他のセッションがそれらを参照していない場合、それらは範囲外になります。
もう 1 つのオプションは、永続的な一時テーブル (接頭辞TempDB..
)です。
Books Onlineから:
ストアド プロシージャで作成されたローカル一時テーブルは、ストアド プロシージャが終了すると自動的に削除されます。このテーブルは、そのテーブルを作成したストアド プロシージャによって実行されるネストされたストアド プロシージャから参照できます。テーブルを作成したストアド プロシージャを呼び出したプロセスは、テーブルを参照できません。
ストアド プロシージャ内で作成された一時テーブルは、ストアド プロシージャが終了すると削除されるため、答えはノーです。
本当に一時テーブルを呼び出し元と共有したい場合は、次のようにすることができます:
まだ存在しない場合は、ストアド プロシージャに一時テーブルを条件付きで作成します。
CREATE PROCEDURE MyProcedure AS
...
if object_id('tempdb..#temp') is null
BEGIN
CREATE TABLE #temp
(...)
END
...
呼び出し元から一時テーブルにアクセスする場合は常に、ストアド プロシージャを呼び出す前に一時テーブルを作成する必要があります。
ストアド プロシージャで条件付きで一時テーブルを作成することにより、呼び出し元が一時テーブルを作成するかどうかにかかわらず機能します。もちろん、呼び出し元は正しい構造で一時テーブルを作成し、終了したら DROP する必要があります (または DB 接続を閉じます)。