从 SQL 中的函数输入和输出 table

Input and output a table from a function in SQL

我想在 T-SQL 中创建一个函数,它输入和输出用户定义的 table 类型的实例。但是,在 RETURN 语句的那一行,它抛出一个错误:

Must declare the scalar variable @output_table

我的代码:

CREATE FUNCTION FUNC_NAME
     (@input_table TableType READONLY, 
      @other_param VARCHAR(255))
RETURNS TableType
AS
BEGIN
    DECLARE @output_table TableType;

    INSERT INTO @output_table (Col1, Col2, Col3)
        SELECT column1, column2, column3
        FROM SOME_TABLE
        WHERE column1 = @other_param;

    RETURN @output_table;
END

有人可以向我解释我做错了什么吗?甚至可以创建一个输入和输出 table 类型变量的函数吗?如果没有,我可以使用其他方法吗?我正在使用 SQL Server Management Studio 2008 R2。

你目前不知道,或者至少我不知道如何做,也找不到例子。这有点道理,因为当您 return 一个 table/dataset 时,它不需要是特定的 table 类型,因为它是一个通用数据集。

这是如何完成的:

CREATE TYPE IntTableType AS TABLE (ID INT);  
GO  


CREATE FUNCTION FUNC_NAME(@input_table IntTableType readonly)
RETURNS @output_table TABLE(ID VARCHAR(20))
AS
BEGIN
    INSERT INTO @output_table (ID)
        SELECT CONVERT(VARCHAR(20),ID)
        FROM @input_table

    RETURN;
END
GO