--v_returncode是out参数
declare
v_out number;
begin
proc_GetAwardPrize(v_productid => 364,v_userid => 3,v_awardtype => 1,v_returncode => v_out);
DBMS_OUTPUT.PUT_LINE('v_out='||v_out);
end;
以下是存储过程:
create or replace procedure proc_GetAwardPrize(v_productid number,v_userid number,v_awardtype number,v_returncode out number) is
v_awardid prd_award.awardid%type;
v_awardlevel pub_typeinfo.name%type;
v_cost prd_award.awardcost%type;
v_name prd_award.awardname%type;
v_flag prd_award.flag%type;
v_temp pub_typeinfo.name%type;
cursor award_cursor is
select awardid,awardcost,awardname,flag from prd_award where status=1 and piid=v_productid and awardtype=v_awardtype;
begin
open award_cursor;
loop
fetch award_cursor into v_awardid,v_cost,v_name,v_flag;
exit when award_cursor%notfound;
v_awardlevel := '';
if v_flag=1 then
select '获得'||pt.name||': '||pa.awardname into v_awardlevel from pub_typeinfo pt,prd_award pa where pa.awardtype=pt.code and pa.awardtype=v_awardtype and pt.remark='prizeLevel' and pa.awardid=v_awardid;
insert into prd_useraward (uaid,awardid,userid,piid,status,awardlevel,wintime) values(SEQ_PRD_USERAWARD.Nextval,v_awardid,v_userid,v_productid,0,v_awardlevel,sysdate);
else
select '获得'||pt.name||' ' into v_awardlevel from pub_typeinfo pt,prd_award pa where pa.awardtype=pt.code and pa.awardtype=v_awardtype and pt.remark='prizeLevel' and pa.awardid=v_awardid;
select name into v_temp from pub_typeinfo where remark='attribute' and code=TO_NUMBER(v_name);
update usr_userinfoext set EXTVALUENUM=EXTVALUENUM+v_cost where EXTCODE=TO_NUMBER(v_name) and userid=v_userid;
insert into prd_useraward (uaid,awardid,userid,piid,status,awardlevel,wintime) values(SEQ_PRD_USERAWARD.Nextval,v_awardid,v_userid,v_productid,1,v_awardlevel||v_temp||v_cost,sysdate);
end if;
end loop;
v_returncode :=0;
EXCEPTION
WHEN OTHERS THEN
rollback;
DBMS_OUTPUT.PUT_LINE('执行得到奖励过程发生错误!');
v_returncode :=1;
close award_cursor;
end proc_GetAwardPrize;
ibaits调用方法:
public int GetAwardPrize(Long piid, Long userid, Integer awardtype) {
// TODO Auto-generated method stub
int returncode = 0;
try{
Map params = new HashMap();
params.put("productid", piid);
params.put("userid", userid);
params.put("awardtype", awardtype);
getSqlMapClientTemplate().queryForObject("getAwardPrize", params);
returncode = (Integer) params.get("returncode");
}catch(Exception e){
e.printStackTrace();
returncode = 1;
}
return returncode;
}
分享到:
相关推荐
Oracle集合类型输出参数的PLSQL存储过程及其Java调用.docxOracle集合类型输出参数的PLSQL存储过程及其Java调用.docx
plsql存储过程 plsql存储过程 plsql存储过程
oracle 数据库 plsql 存储过程
PLSQL jdbc调用存储过程(入门)
Oracle集合类型输出参数的PLSQL存储过程及其Java调用
PLSQL入门存储过程(详细注释案例).pdf
PLSQL调试存储过程,PLSQL调试存储过程.
Oracle利用PLSQL调试存储过程及创建存储过程结构
练习利用PLSQL Developer编写和管理存储过程、存储函数和触发器等
PLSQL中存储过程的建立,导出,导入,加入图示详细描述
plsql创建存储过程并创建job定时任务执行-详细笔记文档总结
plsql存储过程源代码
PLSQL 存储过程 语法
Oracle存储过程基础知识; Oracle存储过程的基本语法; 用Java调用Oracle存储过程总结; 在存储过程中做简单动态查询; Oracle存储过程调用Java方法; Oracle高效分页存储过程实例
plsql 调用 webservice
PLSQL性能调优,出自oracle,对存储过程更深层次的理解
pl sql批量执行多个sql文件和存储过程,需要pl/sql开发方面资料的可以找我
PLSQL存储过程教程,精通plsql存储过程的使用方法
PLSQL和存储过程练习PLSQL和存储过程练习
如果你是临时抱佛脚的,这个资源完全适合你去实践: 1 PLSQL 程序设计简介 2 PLSQL块结构和组成元素 3 PLSQL流程控制语句 4 游标 5 异常处理 ...6 过程与函数 7 程序包的创建和应用 8 触发器