我创建了一个用户定义的类型(使用脚本创建),如下所示:
CREATE TYPE [dbo].[udt_ProductID_SellingPrice] AS TABLE(
[Product_Id] [int] NOT NULL,
[Selling_Price] [money] NULL,
PRIMARY KEY CLUSTERED
(
[Product_Id] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
在同一个数据库上,我创建了一个使用这种类型的函数:
CREATE FUNCTION [dbo].[fn_NetGP_tbl](@InputSKUs udt_ProductID_SellingPrice READONLY, @Currency VARCHAR(3), @SiteName VARCHAR(255), @CatalogueSite VARCHAR(5), @SiteGroup VARCHAR(255))
RETURNS @Results TABLE
(
Product_Id INT NOT NULL,
Selling_Price MONEY NULL,
Net_GP MONEY NULL
)
AS
BEGIN
我将输入 SKU 声明为内存表,如下所示,并调用函数如下:
DECLARE @InputSKUs dbo.udt_ProductId_SellingPrice
INSERT INTO @InputSKUs VALUES(10352316, 500.00)
SELECT * FROM Sensu_Staging.dbo.fn_NetGP_tbl(@InputSKUs, 'GBP', 'Site_Name', 'SITE', 'Site_Group')
并得到(我发现,相当混乱)错误消息:
操作数类型冲突:udt_ProductID_SellingPrice 与 udt_ProductID_SellingPrice 不兼容
我真的无法弄清楚我做错了什么 - 这在以前的数据库上有效,我所做的唯一更改是向 ProductID_SellingPrice 类型添加主键/聚集索引,这似乎已经把所有事情都扔掉了。
我需要更改功能吗?还是不能在内存中的自定义表类型上创建索引?我们希望通过索引该表来加快进程,但如果不可能,那么我想我们将不得不寻找其他方法。
干杯,
马特