【发布时间】:2018-03-02 04:12:01
【问题描述】:
我正在尝试将特定的数据表值填充到表中。我正在使用表值参数。在添加 tabletype 参数时,我被抛出不存在映射。你能找到这部分的错误吗?
下面是我的 .NET 调用
cmdabsSQL = dbabsSQL.CreateCommand()
cmdabsSQL.CommandText = "SP_INS_ResponseTable"
cmdabsSQL.CommandType = CommandType.StoredProcedure
cmdabsSQL.Parameters.Clear()
With dbabsSQL
.AddInParameter(cmdabsSQL, "@SystemName", DbType.String, SourceSysName)
.AddInParameter(cmdabsSQL, "@ClientName", DbType.String, ClientName)
.AddInParameter(cmdabsSQL, "@TableValueTypeII", SqlDbType.Structured, tablevaluedParam)
.AddOutParameter(cmdabsSQL, PARAM_OUT_SQLMSG, DbType.Int32, 100)
End With
intResult = dbBRLASQL.ExecuteNonQuery(cmdBRLASQL)
tablevaluedParam 如下所示。
Dim tablevaluedParam As DataTable = dstDataset.Tables(1)
这里 dstDataset 有两个数据表,dstDataset 表中的值由查询填充。我只是将收到的数据表映射到创建的类型。 下面是我的类型
CREATE TYPE TableValueTypeII AS TABLE
(ResultId BIGINT,
AccountId nvarchar(255),
RecStatusDesc varchar(100),
MatchCount int)
这是我的存储过程部分
Insert into ResponseTable(SrceSysNm,ClntId,GrpId,PrvdId,FileNm,AccId,RestId,
RespSendIn,CreatTs,LstUpdtTs,UserId)
select @SystemName,@ClientName,null,null,null,AccountId,ResultId,0,
GETDATE(),GETDATE(),'Batch' from @TableValueTypeII
dataTable 的排列与创建的类型相同。
【问题讨论】:
-
我猜它与
tablevaluedParam有关。你能说明你是如何创建这个变量的吗? -
tablevaluedParam 由一个数据表组成,该数据表是通过从另一个存储过程中检索值获得的。我只是将收到的数据表映射到创建的类型
-
哪一行抛出异常?你在使用 SQL Server 吗?
-
.AddInParameter(cmdabsSQL, "@TableValueTypeII", SqlDbType.Structured, tablevaluedParam) 这行抛出参数异常
-
Dim tablevaluedParam As DataTable = dstDataset.Tables(1) 这里 dstDataset 有两个数据表,dstDataset 表中的值由查询填充。这些的数据类型是一样的
标签: c# ado.net sqldbtype dbtype