0

我创建了函数和新类型来保存我的表,但现在我得到了错误

操作数类型冲突:nchar 与 TableArgId 不兼容

我正在使用罗斯文数据库。

我的代码如下。

USE Northwind
CREATE TYPE TableArgId 
     AS TABLE
        ( ID NVARCHAR(16));

GO
CREATE or ALTER FUNCTION MyFunc
(
    @clientid TableArgId READONLY
)
    RETURNS @tablica TABLE(
        CustomerID NVARCHAR(16), 
        Category_ID INT, 
        Category_Name NVARCHAR(128)
    )
    AS
    BEGIN
        INSERt INTO @tablica
    SELECT 
        CustomerID, 
        B.CategoryID,
        C.CategoryName
    FROM
    @clientid AS TabID LEFT JOIN 
    Invoices AS A ON TabID.ID = CustomerID
    left join Products AS B ON A.ProductID=B.ProductID
    left join Categories AS C ON B.CategoryID=C.CategoryID;
    RETURN
    END
    GO


SELECT * FROM MyFunc((SELECT CustomerID FROM Invoices WHERE CustomerID = 'QUEEN'));

我可以设置 SELECT 返回的类型吗?

4

1 回答 1

3

我可以设置 SELECT 返回的类型吗?

不 - 你必须先将它分配给一个变量,例如

DECLARE @Param TableArgId;

INSERT INTO @Param (ID)
  SELECT CustomerID
  FROM Invoices
  WHERE CustomerID = 'QUEEN';

SELECT *
FROM dbo.MyFunc(@Param);
于 2020-09-11T00:06:49.387 回答