求一存储过程(sqlserver转oracle),该如何解决

求一存储过程(sqlserver转oracle)CREATEPROCEDUREBCP_transaction_BillList(@Page_Nonvarchar(10)1 ,@Pag

求一存储过程(sqlserver转oracle)
CREATE         PROCEDURE   BCP_transaction_BillList
(
@Page_Nonvarchar(10)   =   '1 ',
@Page_Sizenvarchar(10)   =   '10 ',
@Record_Countbigint   =   0   output,
@TIDnvarchar(60)   =   ' ',
@NOnvarchar(30)   =   ' ',
@CPID   nvarchar(30)   =   ' ',
@CPNamenvarchar(50)   =   ' ',
@TransTypenvarchar(10)   =   ' ',
@SItemPriceint   ,
@EItemPriceint   ,
@SDatenvarchar(8)   =   ' ',
@EDatenvarchar(8)   =   ' ',
@OrderIDnvarchar(80)   =   ' ',
@UserIDnvarchar(50)   =   ' ',
@totalAmt   money   =   0   output
)
AS
BEGIN
set   nocount   on

declare   @sSQL   nvarchar(4000),   @sSQLList   nvarchar(4000),   @sSQLCount   nvarchar(4000),   @sSQLAmt   nvarchar(4000),   @sSub   nvarchar(4000)

IF   @SItemPrice   IS   NULL   or   @SItemPrice   =   ' '
SET   @SItemPrice   =   0

IF   @EItemPrice   IS   NULL     or   @SItemPrice   =   ' '
SET   @EItemPrice   =   9999  

declare   @subPage_Size   nvarchar(10)
set   @subPage_Size   =   Convert(nvarchar(10),((Convert(int,@Page_No)     -   1)   *   Convert(int,@Page_Size)))

set   @sSQLList   =   '
select   top   '   +   @Page_Size   +   '   tid,   T_ORDER.no,   name,   provider_id,     TransType,   bank_transAmt,   bank_sysDate,   bank_sysSeqid,   user_id   '
set   @sSQLCount   =   '
select   count(*)   '
set   @sSQLAmt   =   '
select   sum(bank_transAmt)   '

set   @sSQL   =   '
from   T_ORDER   ,   T_PROVIDER
where   T_ORDER.provider_id   =   T_PROVIDER.no   and   bank_transAmt   between   '   +   convert(nvarchar(10),   @SItemPrice)   +   '   and   '   +   convert(nvarchar(10),   @EItemPrice)

IF   @SDate   <>   ' '   AND   @EDate   <>   ' '
SET   @sSQL   =   @sSQL   +   '
and   bank_sysDate   between   ' ' '   +   @SDate   + ' ' '   and   ' ' '   +   @EDate   + ' ' ' '
if   isnull(@CPID,   ' ')   <>   ' '
set   @sSQL   =   @sSQL   +   '  
and   cprovider_id   =   ' ' '   +   @CPID   +   ' ' ' '

if   isnull(@CPName,   ' ')   <>   ' '
set   @sSQL   =   @sSQL   +   '  
and   name   like   ' '% '   +   @CPName   +   '% ' ' '

if   isnull(@TID,   ' ')   <>   ' '
set   @sSQL   =   @sSQL   +   '  
and   tid   =   ' ' '   +   @TID   +   ' ' ' '



if   isnull(@NO,   ' ')   <>   ' '
set   @sSQL   =   @sSQL   +   '  
and   no   =   ' ' '   +   @NO   +   ' ' ' '

if   isnull(@OrderID,   ' ')   <>   ' '
set   @sSQL   =   @sSQL   +   '  
and   bank_sysSeqid   like   ' '% '   +   @OrderID   +   '% ' '   '

IF   isnull(@UserID,   ' ')   <>   ' '
SET   @sSQL   =   @sSQL   +   '
and   User_ID   like   ' '% '   +   @UserID   +   '% ' ' '

set   @sSub   =   N '   and   TID   not   in   (select   top   '   +   @subPage_Size   +   '   TID '
set   @sSub   =   @sSub   +   @sSQL   +   '   order   by   TID   desc) '


set   @sSQLCount   =   @sSQLCount   +   @sSQL
print   @sSQLCount
EXEC   (@sSQLCount)
 

set   @sSQLAmt   =   @sSQLAmt   +   @sSQL
print   @sSQLAmt
EXEC   (@sSQLAmt)


set   @sSQLList   =   @sSQLList   +   @sSQL   +   @sSub   +   '   order   by   tid   desc '
print   @sSQLList
EXEC   (@sSQLList)

set   nocount   off
END
GO


[解决办法]
--太长了

CREATE or replace PROCEDURE BCP_transaction_BillList
(
Page_Non in varchar2,
Page_Sizen in varchar2,
Record_Count out int,
TIDn in varchar2,
NOn in varchar2,
CPID in varchar2,
CPNamen in varchar2,
TransTypen in varchar2,
SItemPrice in int,
EItemPrice in int,
SDaten in varchar2,
EDaten in varchar2,
OrderIDn in varchar2,
UserIDn in varchar2,
totalAmt out number
)
is
sSQL varchar2(4000);
sSQLList varchar2(4000);
sSQLCount varchar2(4000);
sSQLAmt varchar2(4000);
sSub varchar2(4000);
subPage_Size varchar2(10);
BEGIN

IF SItemPrice IS NULL or SItemPrice = ' ' then
SItemPrice:= 0;
end if;

IF EItemPrice IS NULL or SItemPrice = ' ' then
EItemPrice:= 9999
end if;

......

end;
我的异常网推荐解决方案:oracle存储过程,http://www.myexception.cn/oracle-develop/177537.html