來源:轉(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)載請附上博文鏈接!