我正在使用用户定义的表类型传递到我的存储过程中。 我有理由更改表类型以添加额外的列,现在我收到错误:
参数“@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
无法处理用户定义的表?)
我想我可能遗漏了一些基本的东西,但是看不出来的东西?
答案 0 :(得分:1)
我发现了错误。还有另一个存储过程依赖于需要删除和重新创建的用户定义表。我很惊讶这是错过了,因为当我第一次尝试删除用户定义的表时,它没有让我像上面提到的SP那样引用它(我不得不删除SP来删除依赖关系,然后放弃用户定义表,然后重新创建它们),但它没有抱怨新发现的SP的依赖?
答案 1 :(得分:0)
尝试为参数指定TypeName
:
param.TypeName = "dbo.YourTableDefinition";