我有一个过程,一些自定义类型的一些数据给它:过程不知道自定义类型
CREATE TYPE StringList AS TABLE
(Value NVARCHAR(255));
GO
CREATE TYPE KeyValueList AS TABLE
(
Id uniqueidentifier,
Value NVARCHAR(255));
GO
CREATE PROCEDURE
#update_AttributeFormel(
@modelPrefix NVARCHAR(255),
@definitionNeutralName NVARCHAR(255),
@newFormula NVARCHAR(255),
@providersToRemove StringList READONLY,
@providersToAdd KeyValueList READONLY)
AS ....
的ManagementStudio不显示任何错误(因为它会当我注释掉类型声明),但是当我执行脚本,我发现了以下错误:
Msg 2715, Level 16, State 3, Procedure #update_AttributeFormel, Line 2
Column, parameter, or variable #4: Cannot find data type StringList.
Parameter or variable '@providersToRemove' has an invalid data type.
Msg 2715, Level 16, State 3, Procedure #update_AttributeFormel, Line 2
Column, parameter, or variable #5: Cannot find data type KeyValueList.
Parameter or variable '@providersToAdd' has an invalid data type.
实施为解释在这里:
http://www.simple-talk.com/sql/t-sql-programming/temporary-tables-in-sql-server/
http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters
有没有人有一个想法,为什么出现这种情况?
啊让人心动!有没有办法创建类似临时类型的东西? –
我们决定不创建临时过程,而是创建存储过程,并在迁移过程结束时删除它们(以及类型)。但我认为你的回答是正确的。谢谢! –
奖励:用户定义的类型出现在数据库中的模式特有的,而不仅仅是数据库本身。 –