类型表的SQL错误

时间:2011-12-29 22:36:00

标签: sql sql-server sql-server-2008 tsql

我正在使用用户定义的表类型传递到我的存储过程中。 我有理由更改表类型以添加​​额外的列,现在我收到错误:

  

参数“@MyParam”与其类型不同   用。创建。使用由两部分组成的名称删除并重新创建模块   类型,或使用sp_refreshsqlmodule刷新其参数   元数据。

从我的.net代码调用proc时。 我正在将param值添加到我的命令中,如下所示:

var param = _command.Parameters.AddWithValue("@MyParam" , myTypedDataTable)
param.SqlDbType = SqlDbType.Structured;

其中myTypedDataTable已更新为包含新列。

我尝试删除并重新创建被调用的存储过程,以及删除并重新创建用户定义表。

我也(感谢Google)尝试在我的存储过程和用户​​定义表上使用sys.sp_refreshsqlmodule(但是在用户定义表上没有用,但是给了我错误:“找不到对象'[myUserDefinedTable]'或者您没有权限。“,我认为这可能是因为sys.sp_refreshsqlmodule无法处理用户定义的表?)

我想我可能遗漏了一些基本的东西,但是看不出来的东西?

2 个答案:

答案 0 :(得分:1)

我发现了错误。还有另一个存储过程依赖于需要删除和重新创建的用户定义表。我很惊讶这是错过了,因为当我第一次尝试删除用户定义的表时,它没有让我像上面提到的SP那样引用它(我不得不删除SP来删除依赖关系,然后放弃用户定义表,然后重新创建它们),但它没有抱怨新发现的SP的依赖?

答案 1 :(得分:0)

尝试为参数指定TypeName

param.TypeName = "dbo.YourTableDefinition";