簡體   English   中英

在SQL Server上使用用戶定義的表類型進行操作數類型沖突

[英]Operand type clash using user defined table type on SQL Server

我創建了以下給出的用戶定義類型(使用腳本來創建):

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類型中添加了一個主鍵/聚集索引,這似乎已經使一切都拋棄了。

我需要更改功能嗎? 還是無法在內存自定義表類型上創建索引? 我們希望通過對該表建立索引來加快該過程,但是如果不可能,那么我想我們將不得不尋找其他方法。

干杯,

馬特

我以前在另一個數據庫中定義了用戶數據類型,並在我正在調用的函數(本例中為Net GP函數)中明確引用了該數據類型。

然后,我將數據類型更改為包括一個主鍵(都具有相同的名稱),但仍在函數主體中引用了先前的數據類型,因此產生了混亂但完全准確的錯誤消息。

簡而言之,請確保您在函數的所有點處都更改了所有引用,或者更明智地,將數據類型稱為不同的事物,以便能夠更好地解決此問題!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM