Maciej Los
Лучший способ достичь этого-это создание хранимой процедуры[^] на уровне SQL server. Увидеть пример кода SQL.
USE YourDateBaseName;
CREATE PROCEDURE uspInsertDateRange
--input variables
@startDate DATE,
@endDate DATE,
@myVal INT
AS
SET NOCOUNT ON;
--start recursive query
;WITH CTE AS
(
--initial values
SELECT @startDate AS myDate, @myVal AS myValue
WHERE @startDate <= @endDate
-recursion part
UNION ALL
SELECT DATEADD(DD, 1, myDate) AS myDate, @myVal AS myValue
FROM CTE
WHERE DATEADD(DD, 1, myDate) <= @endDate
)
--insert statement
INSERT INTO YourTableName (myDate, myValue )
SELECT myDate, myValue
FROM CTE
OPTION (MAXRECURSION 0)
GO;
Как вызвать его из кода? Проверить это:
Как установить и получить параметры для командных объектов[
^]
Если вы хотите использовать пользовательский интерфейс для достижения этой цели, вам нужно будет создать
объект DataTable[
^] и
Класс SqlBulkCopy (System.Data.SqlClient)[
^]
Попробуй!
Pasupathy Msc
приведенный выше код не может быть выполнен, он показывает ошибку
Msg 111, Уровень 15, состояние 1, процедура uspInsertDateRange, строка 9
"CREATE/ALTER PROCEDURE" должен быть первым оператором в пакете запросов.
Msg 4145, Уровень 15, состояние 1, процедура uspInsertDateRange, строка 16
Выражение небулевского типа, заданное в контексте, где ожидается условие, рядом с ';'.
Msg 4145, Уровень 15, состояние 1, процедура uspInsertDateRange, строка 21
Выражение небулевского типа, заданное в контексте, где ожидается условие, рядом с ';'.
Msg 102, Уровень 15, состояние 1, процедура uspInsertDateRange, строка 29
Неправильный синтаксис рядом с "GO".
Maciej Los
Какой у вас сервер баз данных: MS SQL, MySQL, PostgreSQL, другие?