Реферат: MS SQL Server 9 Yukon. Интеграция с .NET

Возвращаем ISqlReader

Во многих случаях табличная функция выполняет роль параметризованного view – данные берутся из таблиц, и, после применения операторов SQL к исходным данным и параметрам, результат возвращается в вызывающий код. Создадим функцию, которая будет возвращать список изменений курса валют, произшедших в заданном диапазоне дат:

[SqlFunc(TableDefinition = "D datetime, course decimal(10, 4)")]

[SqlFunction(DataAccess = DataAccessKind.Read,

SystemDataAccess = SystemDataAccessKind.None,

IsDeterministic = false, IsPrecise = true)]

public static ISqlReader GetCourseChanges(DateTime start, DateTime end)

{

SqlCommand cmd = SqlContext.GetCommand();

cmd.CommandText = @"

select changeDate, course from Course

where changeDate between @start and @end";

cmd.Parameters.AddWithValue("@start", start);

cmd.Parameters.AddWithValue("@end", end);

return cmd.ExecuteReader();

}

ПРЕДУПРЕЖДЕНИЕ

Увы, пока что мне не удалось заставить этот пример работать. Сервер неуклонно возвращает ошибку «Reader is closed». Каким образом избежать закрытия Reader после возвращения его серверу, я пока не понял.

Работаем с SqlResultSet

Для тех случаев, когда необходимо сформировать возвращаемый набор данных вручную, предусмотрен доступ к нему через метод контекста SqlContext.GetReturnResultSet(). Объект, возвращаемый этим методом, уже проинициализирован в соответствии с декларированной структурой функции. В него нужно добавить требуемые записи. В принципе, можно как добавлять, так и удалять/изменять записи, если это кажется необходимым. Воспроизведем поведение хранимой процедуры CurrencyCourse, созданной в конце предыдущего раздела:

[SqlFunc(TableDefinition = "D datetime, course decimal(10, 4) NULL")]

[SqlFunction(DataAccess = DataAccessKind.Read,

SystemDataAccess = SystemDataAccessKind.None,

IsDeterministic = false, IsPrecise = true)]

public static void GetCourseTable(DateTime start, DateTime end)

{

using (SqlCommand cmd = SqlContext.GetCommand())

{

cmd.CommandText = @"

К-во Просмотров: 465
Бесплатно скачать Реферат: MS SQL Server 9 Yukon. Интеграция с .NET