我在 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/