gpt4 book ai didi

sql - 如何在 T-SQL 中编写一个函数,该函数接受表作为输入并将结果作为表返回?

转载 作者:行者123 更新时间:2023-12-02 13:47:51 25 4
gpt4 key购买 nike

这是我用来创建一个函数的代码,它接受 table 作为输入,并且在函数内进行操作后返回 table 格式的结果,如下所示:

CREATE FUNCTION fn_CalculateListing(@Listing ListingColumn READONLY)    --(ROWID INT,value1 INT, value2 INT))
RETURNS TABLE
AS
BEGIN
DECLARE @result TABLE (ID INT, Name VARCHAR(50))

INSERT INTO @result(ID,Name)
SELECT ROWID, Name
FROM @Listing

RETURN @Listing
END

我尝试使用表内联参数,但收到以下错误:

Msg 137, Level 15, State 2, Procedure fn_CalculateListing, Line 16
Must declare the scalar variable "@Listring".

Msg 102, Level 15, State 31, Procedure fn_CalculateListing, Line 29
Incorrect syntax near 'BEGIN'.`

如何才能使其正确?

最佳答案

也许指定 dbo 架构很重要。我还对 @result 表进行了与您的代码中稍有不同的定义。

我检查了以下脚本是否有效:

创建表格类型

CREATE TYPE [dbo].[ListingColumn] AS TABLE(
[ROWID] [int] NULL,
[value1] [int] NULL,
[value2] [int] NULL
)
GO

创建表值函数

CREATE FUNCTION [dbo].[fn_CalculateListing](@Listing dbo.ListingColumn READONLY)
RETURNS @result TABLE
(
ID INT,
Name VARCHAR(50)
)
AS
BEGIN
INSERT INTO @result(ID, Name)
SELECT ROWID, value1
FROM @Listing;

RETURN;
END
GO

如果您的函数可以表示为单个 SELECT,那么最好将其编写为单语句内联用户定义函数。语法如下所示:

CREATE FUNCTION [dbo].[InlineCalculateListing](@Listing dbo.ListingColumn READONLY)
RETURNS TABLE
AS
RETURN
(
SELECT ROWID, value1
FROM @Listing AS L
);
GO

关于sql - 如何在 T-SQL 中编写一个函数,该函数接受表作为输入并将结果作为表返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com