SQL问题,错误“无效的数据类型”

时间:2011-02-17 05:26:20

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

使用SQL 2008

所以我创建了一个用户定义类型:

CREATE TYPE dbo.ServiceType AS TABLE (
[TO_ZONE] varchar(30) NOT NULL,
[FROM_ZONE] varchar(30) NOT NULL,
[RATE] decimal(14,2) NOT NULL,
[SERVICE_TYPE] varchar(255) NOT NULL
);

当我尝试使用它时,我得到错误“参数或变量@variableName具有无效的数据类型”

ALTER PROCEDURE [dbo].[ImportServiceTypeRates]

(@ServiceTypes dbo.ServiceType)  --I have tried it without the "dbo." as well

更新

所以我在我的变量声明

中添加了“READONLY”
@ServiceTypes dbo.ServiceType READONLY

我现在得到错误“参数@Servicetype不能被声明为READONLY,因为它不是表值参数”?什么?

我认为“CREATE TYPE ServiceType as TABLE”是宣称它的原因???

我也在Types \ User-Defined Table Types \ dbo.ServiceType

中显示

3 个答案:

答案 0 :(得分:104)

我知道这是一个老帖子,但由于我遇到了同样的问题而且能够解决它,想到分享它。这是智能感知缓存问题,可以通过按 ctrl + shift + R (编辑的快捷方式 - >智能感知 - >刷新来解决)本地缓存)

答案 1 :(得分:12)

您必须将表值参数声明为READONLY

ALTER PROCEDURE [dbo].[ImportServiceTypeRates]    
   @ServiceTypes dbo.ServiceType READONLY 
AS
   --your proc

即使SQL Server强制您的表值参数是只读的,您还必须在存储过程参数列表中显式声明它。

http://msdn.microsoft.com/en-us/library/bb675163.aspx

答案 2 :(得分:9)

只要您不在存储过程中声明除表类型之外的任何参数,您将在Intellisense中获得红色波浪线错误,但应成功创建或更改存储过程。这似乎是一个不修复的Microsoft错误。