Ниже приведена хранимая процедура, используемая для заполнения таблицы в базе данных SQL. @expDate - это параметр, который отправляется из пакетного задания C#, которое получает его значения из электронной таблицы Excel.INSERT Значение null datetime в таблице SQL
Если тренировка для текущего агента активна, электронная таблица не будет иметь значение в ячейке даты истечения срока действия. Это приводит к отправке пустой строки в хранимую процедуру из кода C#, который затем преобразуется в значение datetime 1900-01-01. Это хорошо до тех пор, пока я не буду вставлять новые записи в таблицу с помощью курсора.
Если значение @expDate равно 1900-01-01, мне нужно, чтобы значение в поле даты истечения срока записи SQL было NULL. Тем не менее, я не могу установить @expDate = NULL и не могу просто установить его в пустую ('') [EDIT: я не могу установить пустой из-за бизнес-правила. Пустое значение приведет к тому, что значение поля будет установлено в 1900-01-01]. Какие-либо предложения?
DECLARE @date datetime = GETDATE()
IF @expDate = '1900-01-01' SET @flag = '1'
IF @expDate = '1900-01-01' SET @expDate = GETDATE()
DECLARE prod_cursor CURSOR LOCAL SCROLL FOR
SELECT ProductCode
FROM CourseToProduct
WHERE CourseCode = @courseCode and (TerminationDate >= @expDate OR TerminationDate IS NULL)
IF @flag = '1' SET @expDate = ''
OPEN prod_cursor
FETCH NEXT FROM prod_cursor
INTO @productCode
WHILE @@FETCH_STATUS = 0
BEGIN
IF NOT EXISTS
(
SELECT *
FROM AgentProductTraining
WHERE @sNumber = SNumber and
@courseCode = CourseCode and
@productCode = ProductCode and
@dateTaken = DateTaken
)
BEGIN
IF @sNumber IS NOT NULL
BEGIN
INSERT INTO AgentProductTraining
(
SNumber,
CourseCode,
ProductCode,
DateTaken,
DateExpired,
LastChangeOperator,
LastChangeDate
)
VALUES (
@sNumber,
@courseCode,
@productCode,
@dateTaken,
COALESCE(@expDate, 'NULL'),
@lastChangeOperator,
@lastChangeDate
)
END
END
FETCH NEXT FROM prod_cursor
INTO @productCode
END
CLOSE prod_cursor;
DEALLOCATE prod_cursor;
«Я не могу установить @expDate = NULL, и я не могу просто установить его в пустую ('')". Почему нет? – Oded
Это бизнес-правило, пустое значение установит столбец в 1900-01-01 (только что сделанное редактирование) – NealR
Бизнес-правило? Для детализации реализации ??? Если вам нужно установить значение поля в значение «null» (что вам нужно указать), в чем проблема с установкой переменной в «null»? Где в нее входит бизнес? – Oded