4

stored procedure一時テーブルを作成している内部があります。私のvbコードは、このストアド プロシージャを実行します。

vb6sp実行後に一時テーブルのデータにアクセスすることはできますか?

4

4 に答える 4

3

グローバル スコープの一時テーブルを使用します (それらは##ではなく で始まります#)。これらはセッション間で共有されます。それらを作成したセッションが終了し、他のセッションがそれらを参照していない場合、それらは範囲外になります。

もう 1 つのオプションは、永続的な一時テーブル (接頭辞TempDB..)です。

于 2013-06-11T09:30:58.550 に答える
0

Books Onlineから:

ストアド プロシージャで作成されたローカル一時テーブルは、ストアド プロシージャが終了すると自動的に削除されます。このテーブルは、そのテーブルを作成したストアド プロシージャによって実行されるネストされたストアド プロシージャから参照できます。テーブルを作成したストアド プロシージャを呼び出したプロセスは、テーブルを参照できません。

于 2013-06-11T09:31:10.597 に答える
0

ストアド プロシージャ内で作成された一時テーブルは、ストアド プロシージャが終了すると削除されるため、答えはノーです。

本当に一時テーブルを呼び出し元と共有したい場合は、次のようにすることができます:

  1. まだ存在しない場合は、ストアド プロシージャに一時テーブルを条件付きで作成します。

    CREATE PROCEDURE MyProcedure AS
        ...
        if object_id('tempdb..#temp') is null
        BEGIN
            CREATE TABLE #temp
            (...)
        END 
        ...
    
  2. 呼び出し元から一時テーブルにアクセスする場合は常に、ストアド プロシージャを呼び出す前に一時テーブルを作成する必要があります。

ストアド プロシージャで条件付きで一時テーブルを作成することにより、呼び出し元が一時テーブルを作成するかどうかにかかわらず機能します。もちろん、呼び出し元は正しい構造で一時テーブルを作成し、終了したら DROP する必要があります (または DB 接続を閉じます)。

于 2013-06-11T09:48:55.523 に答える