我对T-SQL很陌生,我目前正忙着为我的存储过程输入参数。
我想将SalesAreas
的列表传递给我的存储过程。 SalesArea
可以有几个countryIds和一些bool值,想象一下C#中的一个类。
我开始创建自己的数据类型,将其传递给存储过程:
CREATE TYPE tIdList AS TABLE
(
ID INT NULL
);
GO
CREATE TYPE tSalesArea AS TABLE
(
CountryIds tIdList NULL,
IsLargeClient BIT NULL,
IsSmallClient BIT NULL,
);
GO
在存储过程中,我想传递tSalesAreas
:
@SalesAreas tSalesArea READONLY
问题:我无法将tIdList
用作tSalesArea
的数据类型。
如果我插入2个销售区域(1:countryIds 3,5; 2:countryId 7),它将如下所示:
Id | SalesAreaId | CountryId
---+-------------+-----------
1 | 1 | 3
2 | 1 | 5
3 | 2 | 7
你知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:1)
您不能在sql server中将表类型用作列(它是表类型)。
相反,请创建tSalesArea
,其中包含表达所需输入所需的列。
create type tSalesArea as table (
SaleAreaId int not null
, CountryIds int not null
, IsLargeClient bit null
, IsSmallClient bit null
);