Использование результатов LINQ to SQL внутри хранимой процедуры SQL Server - PullRequest
0 голосов
/ 04 июня 2010

Примечание : я не пытаюсь вызвать хранимый процесс SQL Server, используя текстовый текст L2SQL.

Я использую LINQPad для некоторых довольно сложных «отчетов», в которых вывод L2SQL сохраняется в массив и обрабатывается в дальнейшем.

Например, обычно гораздо проще выполнить несколько уровней группировки с помощью LINQ to Objects вместо того, чтобы пытаться оптимизировать запрос T-SQL для выполнения в разумные сроки.

Какой самый простой способ получить конечный результат одного из этих «приложений» и использовать его в хранимом процессе SQL Server 2008?

Идея состоит в том, чтобы использовать данные для отчета служб отчетов, а не копировать и вставлять в Excel (ручной труд). Отчеты должны быть доступны на сервере отчетов (без использования элемента управления сервером отчетов в приложении).

Я мог бы вывести CSV и как-то прочитать это через командную строку exec, но это похоже на хак. Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 04 июня 2010

Есть две возможности, каждая из которых потребует от вас использовать «сырой» ADO.NET:

.
  1. Используйте класс SqlBulkCopy , чтобы вставить данные в промежуточную таблицу (может быть временную таблицу) и кодировать хранимую процедуру для чтения из этой таблицы; или

  2. Запишите данные в DataSet или DataTable и используйте Табличный параметр , чтобы передать их в хранимую процедуру.

Второй подход «чище», чем первый, но он не будет работать так же хорошо, если у вас очень большой объем данных (более нескольких сотен строк).

0 голосов
/ 04 июня 2010

SQL Server 2005 и более поздние версии позволяют писать хранимые процедуры в .NET. Таким образом, вы можете использовать LINQ в отчете.

Официальное название - «Хранимая процедура CLR». Здесь хорошее введение.

...