Как мне заставить компонент запроса C # распознавать столбцы, возвращаемые данными из временной таблицы в хранимой процедуре sql

StackOverflow https://stackoverflow.com/questions/204155

Вопрос

Я создал хранимую процедуру, аналогичную приведенной ниже (я использую эту сокращенную версию, чтобы попытаться разобраться в нашей проблеме).

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, который делает иметь явную схему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top