pgh*_*ech 23 sql t-sql sql-server stored-procedures sql-server-2008
使用SQL 2008
所以我创建了一个User Defined类型:
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
);
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它时,我得到错误"参数或变量@variableName具有无效的数据类型"
ALTER PROCEDURE [dbo].[ImportServiceTypeRates]
(@ServiceTypes dbo.ServiceType) --I have tried it without the "dbo." as well
Run Code Online (Sandbox Code Playgroud)
更新
所以我在我的变量声明中添加了"READONLY"
@ServiceTypes dbo.ServiceType READONLY
Run Code Online (Sandbox Code Playgroud)
我现在得到错误"参数@Servicetype不能被声明为READONLY,因为它不是一个表值参数"?什么?
我认为"CREATE TYPE ServiceType as TABLE"是什么声明它?
我还在Types\User-Defined Table Types\dbo.ServiceType中显示
sam*_*sam 110
我知道这是一个老帖子,但由于我遇到了同样的问题并且能够解决它,想到分享它.这是智能感知缓存问题,可以通过按ctrl+ shift+ R(编辑 - >智能感知 - >刷新本地缓存的快捷方式)来解决
p.c*_*ell 13
您必须将表值参数声明为READONLY
.
ALTER PROCEDURE [dbo].[ImportServiceTypeRates]
@ServiceTypes dbo.ServiceType READONLY
AS
--your proc
Run Code Online (Sandbox Code Playgroud)
即使SQL Server强制您的表值参数是只读的,您还必须在存储过程参数列表中显式声明它.
http://msdn.microsoft.com/en-us/library/bb675163.aspx