摘要:如何使用 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] 字段为空:
声明@BatchTVP AS [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;
上面的代码工作正常,值按预期插入到表中。
现在,我想使用 ODBC 和具有完全绑定多行缓冲区的表值参数从 c++ 复制此 sql 代码(将数据作为具有内存中所有值的 TVP 发送),如本文所述: http ://technet.microsoft.com /en-us/library/ff878030.aspx
我已经阅读了规范的大部分页面,但无法确定实现这一目标的方法。
感谢您的任何提示。
弗雷德里克