【问题标题】:Table as parameter incorrect type表作为参数类型不正确
【发布时间】:2020-09-11 08:23:11
【问题描述】:

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

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

我正在使用 Northwind 数据库。

下面是我的代码。

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返回的类型吗?

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

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

    不 - 您必须首先将其分配给变量,例如

    DECLARE @Param TableArgId;
    
    INSERT INTO @Param (ID)
      SELECT CustomerID
      FROM Invoices
      WHERE CustomerID = 'QUEEN';
    
    SELECT *
    FROM dbo.MyFunc(@Param);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-01
      • 2017-07-12
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多