Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставка NULL нулевой даты в таблицу  [new]
Изольда Ратиборовна
Guest
Есть ХП добавления записи в таблицу:
CREATE PROCEDURE [dbo].[spFlowDocAdd] 

    @FlowDocID uniqueidentifier,
    @FlowDocDate date,
    @FlowDocCode char(6), 
    @FlowDocDirID char(1), 
    @FlowDocFromID uniqueidentifier, 
    @FlowDocToID uniqueidentifier, 
    @FlowDocTypeID char(1), 
    @FlowDocFromDate date = NULL, 
    @FlowDocFromNum varchar(50), 
    @FlowDocToDate date = NULL, 
    @FlowDocToNum varchar(50), 
    @FlowDocIsDeleted bit = null, 
    @FlowDocUserLogin varchar(25),  
    @FlowDocComment text=null,
    @FlowDocAddedID uniqueidentifier OUTPUT

AS
BEGIN
    SET NOCOUNT ON;

    SET @FlowDocAddedID = NEWID();
    SET @FlowDocID=@FlowDocAddedID;
	INSERT INTO [docsysdb].[dbo].[tFlowDoc]
           ([FlowDocID]
           ,[FlowDocDate]
           ,[FlowDocCode]
           ,[FlowDocDirID]
           ,[FlowDocTypeID]
           ,[FlowDocFromID]
           ,[FlowDocToID]
           ,[FlowDocFromDate]
           ,[FlowDocFromNum]
           ,[FlowDocToDate]
           ,[FlowDocToNum]
           ,[FlowDocIsDeleted]
           ,[FlowDocUserLogin]
           ,[FlowDocComment])
     VALUES
           (@FlowDocID,
	    @FlowDocDate,
	    @FlowDocCode, 
	    @FlowDocDirID, 
	    @FlowDocTypeID,
	    @FlowDocFromID, 
	    @FlowDocToID, 
	    @FlowDocFromDate, 
	    @FlowDocFromNum, 
	    @FlowDocToDate, 
	    @FlowDocToNum, 
	    @FlowDocIsDeleted, 
	    @FlowDocUserLogin,  
	    @FlowDocComment);
END

Бывает такое, что даты (поля ) пользователями в запись могут сразу не вноситься.
То есть нужно, чтобы в таблице были NULL значения.
А получается, что вставляется дата "1899-12-30".


Что делать?
Примечание: RAD Studio XE+SDAC+MSSQL2008R2.
25 июн 11, 20:14    [10875627]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Передавать в параметр null, а не "1899-12-30".
25 июн 11, 20:51    [10875711]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
Гавриленко Сергей Алексеевич,

В параметр я и передаю NULL.
25 июн 11, 21:19    [10875749]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
temrus
Гавриленко Сергей Алексеевич,

В параметр я и передаю NULL.
Это Вы в профайлере видели?

И удивляюсь, почему параметр @FlowDocComment тип TEXT, а не VARCHAR(MAX)?

Если всё-таки и профайлер показывает, что передаётся NULL, то скажите, нет ли у таблицы триггеров?
25 июн 11, 21:35    [10875782]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
iap
temrus
Гавриленко Сергей Алексеевич,

В параметр я и передаю NULL.
Это Вы в профайлере видели?

И удивляюсь, почему параметр @FlowDocComment тип TEXT, а не VARCHAR(MAX)?

Если всё-таки и профайлер показывает, что передаётся NULL, то скажите, нет ли у таблицы триггеров?


О УЖАС!!! Что же с этим делать??? :((
declare @p1 int
set @p1=1
declare @p17 uniqueidentifier
set @p17='2507AAAD-B2EF-4300-8780-42C3350F4F75'
exec sp_prepexecrpc @p1 output,N'spFlowDocAdd',NULL,'2011-06-25 00:00:00','5UWTTX','I','1691D9AB-28E7-4EDA-A6BD-056BF1E55FB0','1691D9AB-28E7-4EDA-A6BD-056BF1E55FB0','S','1899-12-30 00:00:00','','1899-12-30 00:00:00','',0,'iivanov',NULL,@p17 output
select @p1, @p17
25 июн 11, 21:43    [10875804]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
temrus,

это Вы про '1899-12-30 00:00:00'?
Как задаёте параметры на клиенте?
25 июн 11, 21:56    [10875841]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
iap
temrus,

это Вы про '1899-12-30 00:00:00'?
Как задаёте параметры на клиенте?


if (deFlowDocFromDate->EditValue.IsNull()) mspFlowDocAdd->ParamByName("FlowDocFromDate")->AsDate=NULL;
		else mspFlowDocAdd->ParamByName("FlowDocFromDate")->Value=deFlowDocFromDate->Date;
25 июн 11, 21:59    [10875848]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
temrus, NULL и DBNULL это не совсем одно и то же... Клиент у вас на С++ или с CLR?
25 июн 11, 22:49    [10875961]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
temrus
iap
temrus,

это Вы про '1899-12-30 00:00:00'?
Как задаёте параметры на клиенте?


if (deFlowDocFromDate->EditValue.IsNull()) mspFlowDocAdd->ParamByName("FlowDocFromDate")-> Value=NULL;
		else mspFlowDocAdd->ParamByName("FlowDocFromDate")->Value=deFlowDocFromDate->Date;
Если Value - вариант, конечно.
Хотя, это только мои догадки (я ж не знаю, на чём там у Вас написано)

Как попадает в EditValue значение NULL?
26 июн 11, 10:41    [10876494]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
temrus,

Уже очень давно не держал в руках С++, но, если мне не изменяет склероз, макрос NULL раскрывается в 0. Попробуйте
if (deFlowDocFromDate->EditValue.IsNull()) mspFlowDocAdd->ParamByName("FlowDocFromDate")->Clear;
		else mspFlowDocAdd->ParamByName("FlowDocFromDate")->Value=deFlowDocFromDate->Date;
26 июн 11, 10:54    [10876503]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
invm,
Вот так получилось:
if (cxDateEdit2->EditValue.IsNull()) mspFlowDocAdd->ParamByName("FlowDocFromDate")-> Clear();		
else mspFlowDocAdd->ParamByName("FlowDocFromDate")->Value=cxDateEdit2->Date;
26 июн 11, 14:18    [10876881]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
temrus
Member

Откуда: р-О-ссия, Барвиха
Сообщений: 126
invm
temrus,

Уже очень давно не держал в руках С++,

Кстати, а Вы на чём сейчас сидите? Ну просто, для статистики :)
26 июн 11, 14:19    [10876886]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
temrus
invm
temrus,

Уже очень давно не держал в руках С++,

Кстати, а Вы на чём сейчас сидите? Ну просто, для статистики :)

На T-SQL :)
26 июн 11, 14:59    [10877006]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6203
invm
Уже очень давно не держал в руках С++, но, если мне не изменяет склероз, макрос NULL раскрывается в 0.

Да, именно так - в 0.
26 июн 11, 18:33    [10877543]     Ответить | Цитировать Сообщить модератору
 Re: Вставка NULL нулевой даты в таблицу  [new]
imato
Member

Откуда: Москва
Сообщений: 80
Изольда Ратиборовна,

Хоть поля в инсерте и все, но на всякий случай проверить если ли дефолтное значение для столбца с датой.
27 июн 11, 10:09    [10879626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить