C# 当只有一个表值参数时,为过程分配太多参数

C# 当只有一个表值参数时,为过程分配太多参数,c#,asp.net,sql-server,stored-procedures,C#,Asp.net,Sql Server,Stored Procedures,我正在使用asp.net(C#)、asp.NET4、SQLServer2012、IIS7 我想使用表值参数将excel数据导入sql server。但是我遇到了一个问题。 以下是部分代码: C# SQL server定义TVP CREATE TYPE [dbo].[TVP_Cost] AS TABLE( [mycompany] [nvarchar](50) NOT NULL, [myproject] [nvarchar](50) NOT NULL, [mydate] [date] NOT NUL

我正在使用asp.net(C#)、asp.NET4、SQLServer2012、IIS7

我想使用表值参数将excel数据导入sql server。但是我遇到了一个问题。 以下是部分代码:

C#

SQL server定义TVP

CREATE TYPE [dbo].[TVP_Cost] AS TABLE(
[mycompany] [nvarchar](50) NOT NULL,
[myproject] [nvarchar](50) NOT NULL,
[mydate] [date] NOT NULL,
[mytype] [nvarchar](50) NOT NULL,
[Area1] [numeric](18, 8) NOT NULL,
[Area2] [numeric](18, 8) NOT NULL,
--etc 
)
GO
SQL Server存储过程

ALTER PROCEDURE  [dbo].[loadCost]
    @TVPCost dbo.TVP_Cost readonly
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO Costtest (co1, co2,co3,co4,co5) 
    SELECT co1, co2, co3, co4, co5 from @TVPcost
END

错误消息是,我得到的参数太多,无法执行该过程。但是我只有一个参数,一个表值参数。

我注意到您没有声明
mycmd
。是否可能您之前使用过该命令对象,并且其中已经有一些参数

命令对象很便宜,我总是买一个新的:

var cmd = MyConnection.CreateCommand();

谢谢。我犯了一个愚蠢的错误。忘了在新的上首字母。
var cmd = MyConnection.CreateCommand();