SQL问题与错误“;无效数据类型“;
使用SQL2008 因此,我创建了一个用户定义的类型:SQL问题与错误“;无效数据类型“;,sql,sql-server,tsql,sql-server-2008,stored-procedures,Sql,Sql Server,Tsql,Sql Server 2008,Stored Procedures,使用SQL2008 因此,我创建了一个用户定义的类型: 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 ); 当我尝试使用它时,会出现错误“parameter或variable@variableNam
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
);
当我尝试使用它时,会出现错误“parameter或variable@variableName的数据类型无效”
更新
所以我在变量声明中添加了“READONLY”
@ServiceTypes dbo.ServiceType READONLY
我现在得到错误“参数@Servicetype不能声明为只读,因为它不是表值参数”?什么
我认为“createtype-ServiceType-as-TABLE”就是这样声明的
我还在类型\用户定义的表类型\ dbo.ServiceType中显示。您必须将表值参数声明为
只读
ALTER PROCEDURE [dbo].[ImportServiceTypeRates]
@ServiceTypes dbo.ServiceType READONLY
AS
--your proc
即使SQL Server强制表值参数为只读,也必须在存储过程参数列表中显式声明它
只要不在存储过程中声明除表类型以外的任何参数,就会在Intellisense中出现红色曲线错误,但是应该成功创建或更改存储过程。这似乎是一个未修复的Microsoft错误。我知道这是一篇旧文章,但由于我遇到了同样的问题,并且能够解决它,所以我想分享它。这是一个IntelliSense缓存问题,可以通过按ctrl+shift+R(编辑->IntelliSense->刷新本地缓存的快捷方式)来解决。在哪里声明@variableName?@Nishant SQL server2008@astander(@ServiceTypes dbo.ServiceType READONLY)正常,一旦出现错误,我就无法将其设置为只读,因为@ServiceTypes不是表值参数,我将更新我的问题。@pghtech:这是运行时错误,还是带有红色波形的SSM和带有该错误的悬停工具提示?我已经在我的测试环境中完全按照您的方式重新编程,我确实看到了相同的错误,只是在工具提示中。当执行ALTER
查询时,它执行得很好,没有问题。+1但是在添加第二个int
类型的参数后,我仍然看到红色的曲线。事实上,在我的身体里到处都是红色的曲线。虽然查询执行得很好,但现在已经足够好了。此错误在SQL Server 2017中仍然有效,显示为红色squggle,鼠标悬停显示类似OP描述的错误,但命令运行良好。谢谢应将其标记为右anwser;这对我来说很有魅力。有很多问题把我逼疯了,这个答案帮助了我:)谢谢@pghtech。。。把这当作答案哦,老兄,我多么希望知道这条捷径啊。如果你在SSMS中工作,你可以在Query->IntelliSense Enabled
ALTER PROCEDURE [dbo].[ImportServiceTypeRates]
@ServiceTypes dbo.ServiceType READONLY
AS
--your proc