create or replace procedure pro_js_inter_temp_money(v_orderno varchar2 ) as
/*
创建 : by yugh 08-11
功能:不是全额付款即取消订单
*/
realMoney number(10);
orderMoney number(10);
begin
select tt.real_money into realMoney
from t_sale_order_ty_temp tt where tt.order_id=v_orderno and tt.datasource=”JSYD”;
select ttt.order_money into orderMoney
from t_sale_order_ty_temp ttt where ttt.order_id=v_orderno and ttt.datasource=”JSYD”;
if realMoney < orderMoney then
update t_sale_order_ty_temp aa set aa.audit_status=”已处理”,aa.audit_type=”已取消”,aa.auditor_id=”1″,aa.auditor_name=”管理员”,aa.audit_date=sysdate,
aa.audit_result=”不是全额付款,订单已取消”,aa.modi_date=sysdate,aa.modifier_id=”1″,aa.modifier_name=”管理员” where aa.datasource=”JSYD”
and aa.order_time>sysdate-255 and aa.order_id=v_orderno ;
commit;
end if;
exception
when others then
rollback;
end pro_js_inter_temp_money;
做的一个新功能,以前没弄过存储过程,测试都好了,不知道咋部署。
现在带了一个参数就是orderno ,测试就是把一个确定的订单号来测,功能没问题,问一下本人怎么用成无参,怎么找到满足的订单号呢。感谢!
解决方案
5
create or replace procedure Pro_test is
v_orderno varchar2(100);
begin
v_orderno := "bree06";
--TODO
end Pro_test;
select em.order_id into order_no from t_sale_order_ty_temp em where em.pay_flag="3" and em.datasource="JSYD" ;
多条的话就是用游标和for循环啊,把你满足条件的数据写成一个cursor,然后遍历这个cursor做你的操作就行了,大致这样:
Cursor cursor1 is select,,,..,,,,,;
for everyrow1 in cursor1 loop
// 循环体 做你的更新就可以了
end loop;