记录一段存储过程

create or replace procedure getPartTimeDatas(investor in varchar2,v_cursor out CLOB) as
v_billcount number;
v_wincount number;
v_winrate number;
v_avgwin number;
v_avgloss number;
v_maxcloseprofit number;
v_mincloseprofit number;
v_sumcloseprofit number;

v_daycloseprofit number;
v_pdate CLOB;

v_str CLOB;
begin
DECLARE CURSOR myCusor is
select sum(t.billcount) billcount,sum(t.wincount) wincount,sum(t.winrate) winrate,sum(t.sumwin/t.billcount) avgwin,sum(t.sumloss/t.billcount) avgloss,max(t.closeprofit) maxcloseprofit,min(t.closeprofit) mincloseprofit,sum(t.closeprofit) sumcloseprofit from T_AccountDayProfit t where t.investorid=investor and t.month=to_number(to_char(sysdate,'mm')) and t.year=to_number(to_char(sysdate,'yyyy'));
begin
OPEN myCusor;
LOOP
fetch myCusor into v_billcount,v_wincount,v_winrate,v_avgwin,v_avgloss,v_maxcloseprofit,v_mincloseprofit,v_sumcloseprofit;
EXIT WHEN myCusor%NOTFOUND;
v_str:= v_billcount||','||v_wincount||','||v_winrate||','||v_avgwin||','||v_avgloss||','||v_maxcloseprofit||','||v_mincloseprofit||','||v_sumcloseprofit||',';
v_cursor:=v_cursor||v_str;
END LOOP;
CLOSE myCusor;
end;

DECLARE CURSOR myCusor is
select sum(t.billcount) billcount,sum(t.wincount) wincount,sum(t.winrate) winrate,sum(t.sumwin/t.billcount) avgwin,sum(t.sumloss/t.billcount) avgloss,max(t.closeprofit) maxcloseprofit,min(t.closeprofit) mincloseprofit,sum(t.closeprofit) sumcloseprofit from T_AccountDayProfit t where t.investorid=investor and t.pdate>=trunc(ADD_MONTHS(SYSDATE,-2),'mm');
begin
OPEN myCusor;
LOOP
fetch myCusor into v_billcount,v_wincount,v_winrate,v_avgwin,v_avgloss,v_maxcloseprofit,v_mincloseprofit,v_sumcloseprofit;
EXIT WHEN myCusor%NOTFOUND;
v_str:= v_billcount||','||v_wincount||','||v_winrate||','||v_avgwin||','||v_avgloss||','||v_maxcloseprofit||','||v_mincloseprofit||','||v_sumcloseprofit||',';
v_cursor:=v_cursor||v_str;
END LOOP;
CLOSE myCusor;
end;

DECLARE CURSOR myCusor is
select sum(t.billcount) billcount,sum(t.wincount) wincount,sum(t.winrate) winrate,sum(t.sumwin/t.billcount) avgwin,sum(t.sumloss/t.billcount) avgloss,max(t.closeprofit) maxcloseprofit,min(t.closeprofit) mincloseprofit,sum(t.closeprofit) sumcloseprofit from T_AccountDayProfit t where t.investorid=investor and t.pdate>=trunc(ADD_MONTHS(SYSDATE,-5),'mm');
begin
OPEN myCusor;
LOOP
fetch myCusor into v_billcount,v_wincount,v_winrate,v_avgwin,v_avgloss,v_maxcloseprofit,v_mincloseprofit,v_sumcloseprofit;
EXIT WHEN myCusor%NOTFOUND;
v_str:= v_billcount||','||v_wincount||','||v_winrate||','||v_avgwin||','||v_avgloss||','||v_maxcloseprofit||','||v_mincloseprofit||','||v_sumcloseprofit||',';
v_cursor:=v_cursor||v_str;
END LOOP;
CLOSE myCusor;
end;

DECLARE CURSOR myCusor is
select sum(t.billcount) billcount,sum(t.wincount) wincount,sum(t.winrate) winrate,sum(t.sumwin/t.billcount) avgwin,sum(t.sumloss/t.billcount) avgloss,max(t.closeprofit) maxcloseprofit,min(t.closeprofit) mincloseprofit,sum(t.closeprofit) sumcloseprofit from T_AccountDayProfit t where t.investorid=investor and t.pdate>=trunc(ADD_MONTHS(SYSDATE,-11),'mm');
begin
OPEN myCusor;
LOOP
fetch myCusor into v_billcount,v_wincount,v_winrate,v_avgwin,v_avgloss,v_maxcloseprofit,v_mincloseprofit,v_sumcloseprofit;
EXIT WHEN myCusor%NOTFOUND;
v_str:= v_billcount||','||v_wincount||','||v_winrate||','||v_avgwin||','||v_avgloss||','||v_maxcloseprofit||','||v_mincloseprofit||','||v_sumcloseprofit||',';
v_cursor:=v_cursor||v_str;
END LOOP;
CLOSE myCusor;
end;

DECLARE CURSOR myCusor is
select to_char(t.pdate,'yyyymmdd') pdate,t.closeprofit from T_AccountDayProfit t where t.investorid=investor and t.pdate>=trunc(ADD_MONTHS(SYSDATE,-11),'mm') order by t.pdate asc;
begin
OPEN myCusor;
LOOP
fetch myCusor into v_pdate,v_daycloseprofit;
EXIT WHEN myCusor%NOTFOUND;
v_str:= v_pdate||','||v_daycloseprofit||',';
v_cursor:=v_cursor||v_str;
END LOOP;
CLOSE myCusor;
end;


select substr(v_cursor,1,length(v_cursor)-1) into v_cursor from dual;

end getPartTimeDatas;

/

 

调用:

set serverout on;
declare
v_ret CLOB;
begin
getPartTimeDatas('1',v_ret);
dbms_output.put_line(v_ret);
end;
/

转载于:https://www.cnblogs.com/zhuzhenyu/p/5750535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值