Среда SQL CLR — переменная таблицы или временная таблица в сравнении с коллекцией

#.net #tsql #clr #sqlclr

#.net #tsql #среда clr #sqlclr

Вопрос:

Я создаю набор данных с SQL server — хранимой процедуры, которая возвращает набор данных. Требуется несколько проходов, чтобы манипулировать данными так, как мне это нужно. Я делал это ранее в хранимых процедурах T-SQL, но это становится слишком сложным, поэтому я перехожу на SQL CLR. В T-SQL у меня было несколько табличных переменных

 declare @theData as ( col1 int, .... )
  

и я закончил с инструкцией select, которая объединила эти таблицы. В среде SQL CLR я мог бы вместо этого иметь список объектов:

 List<MyObject> theData = new List<MyObject>();
  

Вопрос: было бы лучшей практикой использовать табличные переменные или коллекцию объектов .NET?

Я мог видеть, что вы не создаете что-то В памяти, используя табличные переменные, скорее работа выполняется на сервере SQL. Синтаксически это не имело бы для меня значения, потому что я мог бы выполнять инструкции «пакетное обновление», используя Linq или SQL.

Ответ №1:

Если вы можете использовать табличные переменные, CTE и т.д. Для возврата необходимых вам данных, я бы придерживался этого. Использование CLR отлично подходит, если вам нужно использовать функции управляемого кода (например, функции объекта), но может быть излишним, если вам действительно не нужно его использовать. Вы можете посмотреть на это для общего обзора:http://msdn.microsoft.com/en-us/library/ms131045.aspx .