【问题标题】:SQL problem with error "Invalid data type"带有错误“无效数据类型”的 SQL 问题
【发布时间】:2011-06-28 20:44:47
【问题描述】:

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

【问题讨论】:

  • 你在哪里声明@variableName?
  • @Nishant SQL Server 2008
  • @astander (@ServiceTypes dbo.ServiceType READONLY)

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


【解决方案1】:

我知道这是一篇旧帖子,但由于我遇到了同样的问题并且能够解决它,所以想分享它。这是一个 IntelliSense 缓存问题,可以通过按 ctrl+shift+R (编辑快捷方式 -> IntelliSense -> Refresh Local Cache )

【讨论】:

  • 这应该被标记为正确的anwser;它对我来说就像一个魅力。非常感谢
  • 那个问题快把我逼疯了,这个答案是帮助我的答案:) 谢谢!
  • @pghtech... 将此标记为答案
  • 哦,伙计,我多么希望我知道这个快捷方式。希望我能多点赞
  • 如果您在 SSMS 中工作,您可以通过在 Query -> IntelliSense Enabled 上关闭和打开 IntelliSense 来完成此操作
【解决方案2】:

只要在存储过程中不声明表类型以外的任何参数,在智能感知中就会出现红色波浪线错误,但应该创建或更改存储过程成功。这似乎是一个未修复的 Microsoft 错误。

【讨论】:

  • +1 但是,在添加了int 类型的第二个参数后,我仍然看到红色波浪线。事实上,我的程序体内到处都是红色的波浪线。查询执行得很好,现在已经足够好了。
  • 此错误在 SQL Server 2017 中仍然有效,显示红色 suggle,鼠标悬停显示 OP 描述的错误,但命令运行正常。谢谢!
【解决方案3】:

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

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

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

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

【讨论】:

  • 好的,一旦出现错误,我无法将其设置为 READONLY,因为@ServiceTypes 不是表值参数,我将更新我的问题。
  • @pghtech:这是运行时错误,还是带有红色波浪的 SSMS 和带有该错误的悬停工具提示?我已经完全按照您的方式在我的测试环境中进行了复制,并且我确实看到了相同的错误,仅在工具提示中。在执行ALTER 查询时,它执行得很好,没有任何问题。
  • 致未来的读者:为了修复 SSMS 中的红色波浪,我必须在创建类型后退出并重新打开 SSMS。不知道为什么,但无论如何查询编辑器都无法识别该类型。
猜你喜欢
  • 2019-11-21
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2011-06-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多