2009-04-10 7 views
5
  1. J'ai un TSQL procédure stockée tsql__sp__A qui fait deux choses:

(a) crée une table temporaire #temptable qui a des données SELECT d'une requête complexe SELECT.Accès aux tables #temp créées par TSQL à partir de la procédure stockée CLR. C'est possible?

(b) Appelle une procédure stockée gérée par CLR clr__sp__B pour chaque ligne qui effectue un calcul sur les paramètres de ligne.

Question: Est-il possible d'accéder #temptable de la procédure CLR clr__sp__B en utilisant le même contexte de connexion? (Non, je ne veux pas déplacer ou créer un autre #tempTable à l'intérieur de la procédure gérée)

Merci.

Répondre

0

Nous pouvons définir deux types de tables temporaires en SQL.

  • locale
  • mondiale

A propos des tables temporaires locales:

Lorsque la table est précédée par simple signe '#', il est défini comme table temporaire locale et son champ d'application est limité à la session dans laquelle il est créé.

Et sur les tables temporaires globales:

En revanche des tables temporaires locales, les tables temporaires globales sont visibles à travers par exemple l'ensemble.

Alors, vous devriez essayer d'utiliser "##" pour créer une table temporaire globale. (Si il y a une différence entre "contexte de connexion" et "session")

+0

Merci. Oui, j'ai des tables temporaires globales (##) comme dernière option mais je me demandais s'il y avait un moyen de passer le contexte actuel de session/connexion de TSQL au gestionnaire CLR? –

+0

Euh, bonne question. Mais qu'en est-il de l'inversion des appels? Je veux dire que vous créez une procédure stockée "wrapper" gérée, et cette procédure appelle tsql__sp__A et après cela clr__sp__B. Ou, vous réécrivez clr__sp__B pour appeler d'abord tsql__sp__A. – boj

2

Merci Boj.

Cependant, je trouve que lorsque vous utilisez avec « connexions contexte = true » ouvre toutes SET

Read Bol Article

// La connexion de contexte vous permet d'exécuter des instructions SQL dans le même contexte que votre le code a été invoqué en premier lieu //

using (SqlConnection connection = new SqlConnection("context connection=true")) 
{ 
    connection.Open(); 
    // access #temp table 
} 
Questions connexes