c# - SQL 服务器 : pass datatable to stored procedure with a null value

标签 c# sql-server-2008 stored-procedures datatable

我在 SQL Server 中创建了一个用户定义的表类型,并将其作为参数传递给存储过程。

在 C# 中,我创建了一个 DataTable,然后用与 SQL Server 表类型中相同数量的列填充它,列类型也相同。

我在 SQL Server 中创建的这种表类型允许某些列为空值,因此在不需要设置它们时从 C# 设置为空类型。

然后从我的存储过程我做:

CREATE PROCEDURE [MySP] 
    @Data MyDataType READONLY
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO OneTable
        SELECT *  
        FROM @Data
END

我的问题是:当 SQL Server 发现用户定义表中的列为空时,它会做什么?它会识别 C# 空类型并自动插入到目标列表 OneTable 中作为正确的 SQL Server NULL 值吗?

最佳答案

您应该使用 C# 中的 System.DBNull 单例类。这与 T-SQL 中的 NULL 相同。

关于c# - SQL 服务器 : pass datatable to stored procedure with a null value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44590144/

相关文章:

c# - Xml序列化错误: Unable to cast object of type

sql-server-2008 - SSIS API : How does one know what Interface to cast a __COMObject to?

sql-server-2008 - SQL 中 where 语句的性能,而不是数据集上的过滤

php - 使用 PHP PDO 调用 MySQL 存储过程

entity-framework - 我不能在事务范围内的Entity Framework中调用存储过程吗?

c# - 拆分字符串和字符串数组

c# - 寻找一个项目的想法

c# - 在显示之前找到 ContextMenuStrip 的高度

sql - 在 SQL 中使用 [like] like in 子句?

mysql - SQL_CALC_FOUND_ROWS 在 mysql 中不起作用