Как мне заставить компонент запроса C # распознавать столбцы, возвращаемые данными из временной таблицы в хранимой процедуре sql
-
03-07-2019 - |
Вопрос
Я создал хранимую процедуру, аналогичную приведенной ниже (я использую эту сокращенную версию, чтобы попытаться разобраться в нашей проблеме).
CREATE PROCEDURE bsp_testStoredProc
AS
BEGIN
CREATE TABLE #tmpFiles
(
AuthorName NVARCHAR(50),
PercentageHigh INT
)
-- Insert data into temp table
SELECT AuthorName, PercentageHigh FROM #tmpFiles
ORDER BY PercentageHigh DESC
DROP TABLE #tmpFiles
RETURN 0
END
Исходя из моего кода на C # в VS2008, я пытаюсь использовать компонент запроса с Использовать Существующую Хранимую процедуру возможность подключить это к DataTable / DataGridView для отображения результатов.
Однако, поскольку я выбираю из временной таблицы, в свойствах компонента запроса Visual Studio не отображает никаких столбцов, возвращаемых из хранимой процедуры.Я предполагаю, что у него возникают проблемы с определением используемых типов данных, поскольку SP не основан на реальной схеме.
Подключение к различным хранимым процедурам, которые выбирают из реальных таблиц, корректно отображает столбцы.
Кто-нибудь знает что-нибудь об этом?Есть ли какая-то подсказка, которую я могу куда-нибудь добавить, чтобы явно указать, какие данные будут возвращены?
Заранее благодарю.
Решение
Для получения дополнительной информации вы могли бы рассмотреть возможность использования "табличной переменной", а не временной таблицы (т. е.@FOO вместо #FOO) - это может немного помочь, и это, безусловно, помогает решить несколько проблем с базой данных tempdb.
С временными таблицами - нет, нет способа явно объявить схему SPs.Возможно, я бы предложил использовать упрощенную версию SP при создании ваших классов-оболочек, т. е.попросите его сделать тривиальный ВЫБОР правильной формы.
В качестве альтернативы, я бы использовал LINQ для использования UDF, который делает иметь явную схему.