gpt4 book ai didi

sql - 如何制作一个以用户定义的表类型为参数并在sql中返回相同的函数?

转载 作者:行者123 更新时间:2023-12-04 13:16:06 26 4
gpt4 key购买 nike

实际上我在 sql server 2008 中创建了一个用户定义的表类型。结构如下。

我将它作为函数中的参数传递,该函数也返回该类型的表类型。我面临这个问题,当我在函数中声明一个该类型的变量时,在其中插入一些数据并返回该参数。

表类型结构为:

Create Type OfferWithSubscription  as  Table                                        
(
OfferID int,
OfferUserID int,
OfferImage varchar(200),
OfferExactPrice Decimal(18,2),
OfferContent varchar(max),
OfferTitle varchar(100),
StartDate datetime,
EndDate datetime,
StartTime datetime,
StopTime datetime,
ShowToUser bit,
SubID int,
SubLevel varchar(100)
)

我试图创建的功能是:
CREATE FUNCTION FN_ShowOffer
(
@Gold int,
@Silver int,
@Bronze int,
@table dbo.OfferWithSubscription Readonly )
RETURNS dbo.OfferWithSubscription
AS
BEGIN

DECLARE @ReturnTable AS dbo.OfferWithSubscription;
Declare @Case as varchar(20)
if(@Gold=0 and @Silver=1 and @Bronze=0 )
begin
set @Case='1S'
end
if(@Case='1S')
Begin
insert into @ReturnTable
select OfferID, OfferUserID, OfferImage,
OfferExactPrice, OfferContent,
OfferTitle, StartDate, EndDate,
StartTime, StopTime, ShowToUser,
SubID, SubLevel
from @table
where SubID=4
End

RETURN (

@ReturnTable
)
END

最佳答案

你只需要像下面这样扩展类型。
仅供引用 - Can T-SQL function return user-defined table type?

CREATE FUNCTION FN_ShowOffer
(
@Gold int,
@Silver int,
@Bronze int,
@table dbo.OfferWithSubscription Readonly )
RETURNS @ReturnTable Table
(
OfferID int,
OfferUserID int,
OfferImage varchar(200),
OfferExactPrice Decimal(18,2),
OfferContent varchar(max),
OfferTitle varchar(100),
StartDate datetime,
EndDate datetime,
StartTime datetime,
StopTime datetime,
ShowToUser bit,
SubID int,
SubLevel varchar(100)
)
AS
BEGIN
Declare @Case as varchar(20)
if(@Gold=0 and @Silver=1 and @Bronze=0 )
begin
set @Case='1S'
end
if(@Case='1S')
Begin
insert into @ReturnTable
select OfferID,OfferUserID,OfferImage,OfferExactPrice,OfferContent,OfferTitle,
StartDate,EndDate,StartTime,StopTime,ShowToUser,SubID,SubLevel from @table where SubID=4
End

RETURN
END

并进一步澄清,这完全兼容并可分配给该表类型的变量,例如 SQL Fiddle
declare @t OfferWithSubscription
insert @t
select * from fn_showoffer(1,2,3,@t)

关于sql - 如何制作一个以用户定义的表类型为参数并在sql中返回相同的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600496/

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