2009-04-10 1 views
5
  1. У меня есть TSQL хранимой процедуры tsql__sp__A, который делает две вещи:

(а) создает временную таблицу #tempTable, который имеет выбора данных из сложного запроса на выборку.Доступ к TSQL, созданным таблицами #temp, из хранимой процедуры CLR. Является ли это возможным?

(b) Вызывает контролируемую CLR хранимую процедуру clr__sp__B для каждой строки, которая вычисляет параметры строки.

Вопрос: Можно ли получить доступ к #tempTable из процедуры CLR clr__sp__B используя тот же контекст соединения? (Нет, я не хочу перемещать или создавать другое #tempTable внутри управляемой процедуры)

Спасибо.

ответ

0

В SQL можно определить два типа временных таблиц.

  • местного
  • глобальный

О локальных временных таблицах:

Когда таблица предваряется одним символом «#», она определяется как временной локальной таблицы и сфера его применения ограниченное сеансом, в котором он создан.

А насчет глобальных временных таблиц:

В отличие от локальных временных таблиц, глобальные временные таблицы видны на всем экземпляре.

Так что вы можете попробовать использовать «##» для создания глобальной таблицы темп. (Если есть разница между «контекстом подключения» и «сеансом»)

+0

Спасибо. Да, у меня есть глобальные временные таблицы (##) в качестве последнего параметра, но было интересно, есть ли способ передать текущий контекст сеанса/подключения TSQL для менеджера CLR? – 2009-04-10 18:49:45

+0

Да, хороший вопрос. Но что насчет инверсии вызовов? Я имею в виду, что вы создали управляемую «обертку» хранимую процедуру, и эта процедура вызывает tsql__sp__A и после этого clr__sp__B. Или вы переписываете clr__sp__B сначала для вызова tsql__sp__A. – boj

2

Спасибо Boj.

Однако я обнаружил, что при использовании с «контекстных связей = истина» он открывает все SET

Read Bol Article

// Подключение контекста позволяет выполнять операторы SQL в том же контексте, что ваш код был вызван в первую очередь //

using (SqlConnection connection = new SqlConnection("context connection=true")) 
{ 
    connection.Open(); 
    // access #temp table 
} 
Смежные вопросы