如何把下面这个MSSQL函数转为Oracle函数?CREATE FUNCTION [dbo].[NS_BMS_GetAmountResultOfPayBills]
(
@date DATETIME, -- 日期
@AgId INT , -- 成员单位分组编号
@cltNo VARCHAR(32) , -- 成员单位编号
@sureMode VARCHAR(12) -- 开票方式
)
RETURNS @TB Table
(
AGId INT , -- 分组编号
AGName VARCHAR(128) , -- 分组名称
cltNo VARCHAR(32) , -- 单位编号
cltName VARCHAR(255) , -- 单位名称
sureMode Varchar(128) , -- 开票方式
amount NUMERIC(15,2) , -- 当月余额
amountLast NUMERIC(15,2) -- 上年同期余额
)
AS
BEGIN IF @sureMode IS NULL
SELECT @sureMode = '%'
IF @date is Null
SET @date = (SELECT today From VW_COM_GetToDay)
Declare @lastdate DATETIME Select @lastdate = DateAdd(YEAR , -1 , @date) INSERT INTO @TB
Select a.AgId , a.AgName , a.cltNo , a.cltName ,a.sureMode, a.Amount , b.Amount as lastAmount
From dbo.NS_BMS_GetBalanceOfPayBill(@date , @AgId , @cltNo) a
left join dbo.NS_BMS_GetBalanceOfPayBill(@lastdate , @AgId , @cltNo) b
on a.cltno = b.cltno and a.suremode=b.suremode
WHERE a.sureMode Like @sureMode
RETURN
END
(
@date DATETIME, -- 日期
@AgId INT , -- 成员单位分组编号
@cltNo VARCHAR(32) , -- 成员单位编号
@sureMode VARCHAR(12) -- 开票方式
)
RETURNS @TB Table
(
AGId INT , -- 分组编号
AGName VARCHAR(128) , -- 分组名称
cltNo VARCHAR(32) , -- 单位编号
cltName VARCHAR(255) , -- 单位名称
sureMode Varchar(128) , -- 开票方式
amount NUMERIC(15,2) , -- 当月余额
amountLast NUMERIC(15,2) -- 上年同期余额
)
AS
BEGIN IF @sureMode IS NULL
SELECT @sureMode = '%'
IF @date is Null
SET @date = (SELECT today From VW_COM_GetToDay)
Declare @lastdate DATETIME Select @lastdate = DateAdd(YEAR , -1 , @date) INSERT INTO @TB
Select a.AgId , a.AgName , a.cltNo , a.cltName ,a.sureMode, a.Amount , b.Amount as lastAmount
From dbo.NS_BMS_GetBalanceOfPayBill(@date , @AgId , @cltNo) a
left join dbo.NS_BMS_GetBalanceOfPayBill(@lastdate , @AgId , @cltNo) b
on a.cltno = b.cltno and a.suremode=b.suremode
WHERE a.sureMode Like @sureMode
RETURN
END
呵呵,没用过MSSQL的说,对那个@TB 不了解,那是个实际存在的表还是个复合数据类型?