.net - SQL 函数的表类型输入的 Null、Empty 或默认值
问题描述
我有一个自定义表类型调用 UniqueIdentifierTable
CREATE TYPE [dbo].[UniqueidentifierTable] AS TABLE(
[Value] [UNIQUEIDENTIFIER] NULL
)
我有一个将此表类型作为输入的函数:
CREATE FUNCTION [dbo].[MyFunction](@Input UniqueidentifierTable READONLY)
RETURN @Output .....
我尝试通过传入默认值或空值从我的 .NET 层调用它。
.FromSql("SELECT Output FROM MyFunction(NULL)")
上面的电话给了我错误
'操作数类型冲突:NULL 与 UniqueidentifierTable 不兼容'
谷歌搜索后,一些帖子建议将其留空,然后它是默认值,所以我尝试在没有任何输入的情况下调用该函数
.FromSql("SELECT Output FROM MyFunction()")
我会得到错误
为过程或函数 MyFunction 提供的参数数量不足。
如何将默认的空表值类型传递给此 SQL 函数?
解决方案
您的评论给了我很多信息,我想发布另一种方法,但从 .net 的角度来看,而不是在 SQL 服务器上。
我设法创建了一个空的 DataTable 并以这种方式将其作为参数传递。
DataTable table = new DataTable();
table.Columns.Add("Value", System.Type.GetType("System.Guid"));
SqlParameter param = new SqlParameter("@Input ", table);
param.TypeName = "dbo.UniqueidentifierTable";
param.SqlDbType = SqlDbType.Structured;
//some more code to call using context... ect..
.FromSql("SELECT Output FROM MyFunction({0})", param)
推荐阅读
- reactjs - 我试图在 JSX 中使我的按钮尺寸更小,但我不知道如何
- r - raster:: extract 生成一个空列表
- redis - Redis 发布/订阅。客户端接收消息时抛出的错误会影响发送消息的服务器吗?
- python - 使用 Python 中的条件更新 XML 节点值
- ag-grid - 在 ag-grid 中创建一个降低或增加列宽的按钮
- sql-server - 尝试在 SQL WHERE IN 语句中使用变量
- python-3.x - 无法提取表数据
- python - 为什么 scipy.optimize.fmin_tnc 没有收敛到我的代码中的最佳解决方案?
- nuxtjs - 如何从 this.$auth.fetchUser() 存储用户?
- python - 替换#Python中的重复字符串