亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

sql server中 返回 result table 函數(shù)的倆中寫法

來源:轉(zhuǎn)載 發(fā)布時間:2018-11-01 10:18:28 閱讀量:1231

1,直接返回表結(jié)構(gòu)數(shù)據(jù)


USE [CmxSystem]

GO

/****** Object:  UserDefinedFunction [dbo].[Fun_CarsTransferList]    Script Date: 2018/10/31 星期三 19:21:50 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER  function [dbo].[Fun_CarsTransferList](@EntId int ,@UserNo varchar(30),@PageNo int)

returns table

as

return

(

    with  CarsTransferInfo as(

    select c.TransferNo,b.ChineseName,c.FromUser,c.ToUser,c.CrtDate,c.ToEntId,

    (case c.Status when '0' then '未審批'when '1' then '審批通過'when '2' then '審批拒絕' end) Status 

    from CarsTransfer  c inner join  EnterpriseUsersBaseInfo  a 

    on c.EntId=a.EntId

    inner join   EnterpriseBaseInfo   b   

    on  a.EntId=b.ID 

    where c.EntId=@EntId  and a.UserNo=@UserNo 

    )

    , BaseInfo as(    

     select a.ChineseName as name ,a.ID from EnterpriseBaseInfo a where  ID in(

     select c.ToEntId from CarsTransfer c 

     where c.EntId=31  )

     )


     SELECT  TOP 20  *    FROM

        (

            SELECT

                ROW_NUMBER () OVER (ORDER BY id ASC) RowNumber ,c.TransferNo,c.ChineseName,c.FromUser,c.ToUser,c.CrtDate,c.ToEntId,

             c. Status,b.name

             from CarsTransferInfo  c inner join   BaseInfo  b 

             on  c.ToEntId= b.ID

        ) A

    WHERE

    A.RowNumber > (@PageNo - 1) * 20



)



2,返回表函數(shù)中需要使用變量做一些判斷的方法在返回表數(shù)據(jù)


USE [CmxSystem]

GO

/****** Object:  UserDefinedFunction [dbo].[Fun_AccountEntry]    Script Date: 2018/10/31 星期三 19:23:45 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER FUNCTION [dbo].[Fun_AccountEntry](  @RdNo varchar(30),@EntId int)    

RETURNS  @Table TABLE(        

    RdNo varchar(20),

    EntId int ,

    Amount int,

    CrtDate datetime,

    Remark  varchar(50),

    PayDocNo varchar(30),

    AccoutType varchar(30),

    CarsVin   varchar(20),

    WhCode     varchar(20),

    ArCode     varchar(20)

)    

AS   

BEGIN   

    DECLARE  @str char 

    select @str = LEFT(@RdNo,1)

    if (@str)='R'


       INSERT @Table select top 1 a.RdNo,a.EntId,a.Amount,a.CrtDate,a.Remark,a.PayDocNo,

              (CASE b.AccoutType

                   WHEN '1' THEN '充值'

                   WHEN '2' THEN '費用'

                   WHEN '3' THEN '預(yù)約'

                   WHEN '4' THEN '退款'

              END) as AccoutType

        ,b.CarsVin,'','' 

           from  EnterpriseRechargeDetm a inner join  AccountEntry b  on a.RdNo = b.BillNo

           where  a.EntId=@EntId and  a.RdNo=@RdNo  

      

    if (@str)='O'

          INSERT @Table  select a.BillNo,a.EntId,a.Amount,a.CrtDate,'','',b.WhCode,b.ArCode,

          

            (CASE a.AccoutType

                   WHEN '1' THEN '充值'

                   WHEN '2' THEN '費用'

                   WHEN '3' THEN '預(yù)約'

                   WHEN '4' THEN '退款'

              END) as AccoutType,

          a.CarsVin 

             from AccountEntry  a inner join  OrderDetm b

             on a.BillNo=b.OrderNo

             where  a.EntId=@EntId and  a.BillNo=@RdNo 


  if  (@str)='I'

          INSERT @Table  select a.BillNo,a.EntId,a.Amount,a.CrtDate,'','',b.WhCode,b.ArCode, 

            (CASE a.AccoutType

                   WHEN '1' THEN '充值'

                   WHEN '2' THEN '費用'

                   WHEN '3' THEN '預(yù)約'

                   WHEN '4' THEN '退款'

              END) as AccoutType

              ,a.CarsVin 

             from AccountEntry  a inner join  OrderDetm b

             on a.BillNo=b.OrderNo

             where  a.EntId=@EntId and  a.BillNo=@RdNo 

    RETURN     

END

總結(jié):應(yīng)為函數(shù)中不能創(chuàng)建臨時表所以使用該方法


RETURNS  @Table TABLE(        

    RdNo varchar(20),

    EntId int ,

    Amount int,

    CrtDate datetime,

    Remark  varchar(50),

    PayDocNo varchar(30),

    AccoutType varchar(30),

    CarsVin   varchar(20),

    WhCode     varchar(20),

    ArCode     varchar(20)

)     相當(dāng)于就是創(chuàng)建了臨時表


在使用 insert @Table  select * from table 的方法吧數(shù)據(jù)查出來賦值給新建的表中在返回

--------------------- 

作者:十年河?xùn)|,十年河西,莫欺騷年窮 

來源:CSDN 

原文:https://blog.csdn.net/weixin_41600552/article/details/83589168 

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!


標(biāo)簽: 數(shù)據(jù)庫
分享:
評論:
你還沒有登錄,請先