Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL问题与错误“;无效数据类型“;_Sql_Sql Server_Tsql_Sql Server 2008_Stored Procedures - Fatal编程技术网

SQL问题与错误“;无效数据类型“;

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

使用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@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