5
  1. 次の2 つのことを行う TSQL ストアド プロシージャtsql__sp__Aがあります。

(a)複雑な SELECT クエリからの SELECT データを含む一時テーブル#tempTableを作成します。

(b)行パラメーターで計算を行う行ごとに、CLR マネージ ストアド プロシージャclr__sp__Bを呼び出します。

質問: 同じ接続コンテキストを使用して、CLR プロシージャ clr__sp__B から#tempTableにアクセスできますか? (いいえ、マネージ プロシージャ内で別の#tempTableを移動または作成したくありません)

ありがとう。

4

2 に答える 2

2

ボージありがとう。

ただし、「コンテキスト接続= true」で使用すると、すべてのSETが開かれることがわかりました

ボルの記事を読む

//コンテキスト接続により、コードが最初に呼び出されたのと同じコンテキストで SQL ステートメントを実行できます//

using (SqlConnection connection = new SqlConnection("context connection=true"))
{
    connection.Open();
    // access #temp table
}
于 2009-04-11T00:13:47.533 に答える
0

SQL では 2 種類の一時テーブルを定義できます。

  • ローカル
  • グローバル

ローカル一時テーブルについて:

テーブルの前に '#' 記号が 1 つ付いている場合、そのテーブルはローカル一時テーブルとして定義され、そのスコープはテーブルが作成されたセッションに限定されます。

そしてグローバル一時テーブルについて:

ローカル一時テーブルとは対照的に、グローバル一時テーブルはインスタンス全体で表示されます。

したがって、「##」を使用してグローバル一時テーブルを作成してみてください。( 「接続コンテキスト」と「セッション」に違いがある場合)

于 2009-04-10T18:26:54.107 に答える