我在SQL Server 2008 R2中有一个存储过程:
CREATE TYPE TagTable AS TABLE (Tag VARCHAR(50))
declare @FilteredTags as TagTable
INSERT INTO @FilteredTags (Tag)
SELECT data FROM ...
它曾经有用,但后来我想将Tag
从VARCHAR(15)
更改为VARCHAR(50)
,我收到错误:
Msg 2715,Level 16,State 3,Procedure SearchNewsByTag,Line 3
列,参数或变量#10:找不到数据类型TagTable 参数或变量' @ FilteredTags'具有无效的数据类型。Msg 1087,Level 16,State 1,Procedure SearchNewsByTag,Line 36
必须声明表变量" @ FilteredTags"。
我尝试重新启动所有SQL Server服务,尝试使用其他名称,如TagTable2,TagTable3 ......仍然无法正常工作。兼容级别为100
解决方案:从http://www.sql-server-performance.com/2008/how-to-alter-a-uddt/运行SCRIPT以重新生成新的UDDT。
答案 0 :(得分:1)
请注意表格类型。他们有很多限制。
如果我需要修改表格类型,我总是创建一个新版本并修改所有相关代码。
因此,如果您遵循以下模式,您将永远不会遇到问题:
如果表格类型正在使用,则无法修改或删除。