以下に示すユーザー定義型を作成しました(作成するスクリプトを使用):
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 タイプに追加することです.これはすべてを台無しにしたようです.
機能を変更する必要がありますか? または、インメモリ カスタム テーブル タイプにインデックスを作成することはできませんか? そのテーブルにインデックスを付けてプロセスを高速化することを望んでいましたが、それが不可能な場合は、他の方法を見つける必要があると思います.
乾杯、
マット