Резюме. Как указать значение поля, допускающее значение NULL, в индексе строки/столбца параметра табличного значения с использованием метода полностью связанного многострочного буфера odbc?
Подробности: я определил тип таблицы следующим образом:
CREATE TYPE tp_Transition AS TABLE
(
[Timestamp] [datetimeoffset](7) NOT NULL,
[Value] [float] NULL,
);
GO
Таким образом, Timestamp не может быть нулевым, а Value может.
Теперь я создаю новую хранимую процедуру, используя этот вновь определенный тип в качестве параметра с табличным значением:
CREATE PROCEDURE [dbo].[sp_InsertTransition]
@TransitionBatch AS [tp_Transition] READONLY
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [dbo].[Transition] ([Timestamp], [Value])
SELECT [Timestamp], [Value] FROM @TransitionBatch;
END;
Чтобы протестировать эту новую процедуру, я пишу следующий код, обратите внимание, что для строки 2 поле [Value] равно null:
ОБЪЯВИТЬ @BatchTVP КАК [tp_Transition];
/* Add data to the table variable. */
INSERT INTO @BatchTVP ([Timestamp], [Value])
VALUES
('2014-05-14 13:05:00.000', 130500.009),
('2014-05-14 13:05:01.000', NULL);
/* Pass the table variable data to a stored procedure. */
EXEC [dbo].[sp_InsertTransition] @BatchTVP;
Приведенный выше код работает нормально, и значение вставляется в таблицу, как и ожидалось.
Теперь я хочу реплицировать этот код sql из С++, используя ODBC и табличный параметр с полностью связанными многострочными буферами (отправлять данные как TVP со всеми значениями в памяти), как описано в этой статье technet: http://technet.microsoft.com/en-us/library/ff878030.aspx
Я прочитал большинство страниц спецификации, но не смог определить, как этого добиться.
Спасибо за любую подсказку.
Фредерик