Правильные типы параметров для запросов select, в которых используются функции с табличным значением.

Мой SQL Server 2012 содержит функцию Get_Schedule:

CREATE FUNCTION Get_Schedule(
    @pProject_Id   AS INT,
    @pPeriod_Start AS DATETIME2,
    @pPeriod_End   AS DATETIME2)
RETURNS TABLE
WITH SCHEMABINDING
AS
    RETURN (
        SELECT
            42     AS Val1,
            'Foo'  AS Val2);

Обозреватель объектов SQL Server в Visual Studio 2015 показывает параметры функции с определенными типами.

Однако при перетаскивании функции в конструктор строго типизированного набора данных параметры DATETIME2 изменяются на ANSISTRING вместо System.DateTime или System.Data.SqlDbType.DateTime2.

Параметр int @pProject_Id действительно имеет правильный тип.

Это происходит как при использовании оператора select для адаптера таблицы для доступа к базе данных, так и при создании новой хранимой процедуры (сама процедура имеет ожидаемый параметр DATATIME2 as, но сгенерированный адаптер таблицы имеет ansistring).

Как иметь правильные типы параметров в сгенерированных адаптерах таблиц?


person Kasper van den Berg    schedule 24.11.2015    source источник


Ответы (1)


После добавления запроса и его адаптера таблицы:

  • откройте свойства адаптера таблицы;
  • развернуть SelectCommand; а также,
  • отредактируйте Parameters на правильный тип.
person Kasper van den Berg    schedule 24.11.2015
comment
Просто предупреждение всем, кто применяет этот метод (который работает): если вы впоследствии измените свой запрос, он повторно сгенерирует команду и вернет параметры к их значениям по умолчанию. - person Tim F.; 20.04.2018