[英]Error while using user-defined table type in sql --> Operand type clash: varchar is incompatible with "user defined table type"
[英]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.