我是从SQL Server转过来的,以前要实现根据条件对某个表进行操作的时候,在SQL Server2000中用一个游标就可以了,但现在换了Oracle,我就不会了我已经做到了对某一个订单的处理,写的是一个存储过程,参数为订单号和财会月份:
Proc_CalculateOrderSpec(i_OrderID in varchar,i_Period in varchar)--自己有SQL 的基础,然后根据SQL Server2000的思想写的
--处理的是一个订单该财会月份的情况
现在要实现:1.根据财会月份对所有的订单都进行处理,Procedure/Package该怎样写?参数是财会月份(i_Period)
2.根据财会月份和代理商对所有符合条件的订单进行处理,Procedure/Package该怎样写?参数是财会月份(i_Period)和代理商(i_AgentID)
Create table OrderSpec(OrderID varchar,PeriodID varchar,AgentID varchar,Type  varchar2(1),Quantity int,....)

解决方案 »

  1.   

    用游标处理所有符合条件的记录。
    游标用法:
    首先定义游标
    cursor cc is select * from tab1 where....;
    c1 cc%rowtype;
    在begin..end段中使用游标
    open cc;
    loop
     fetch cc into c1;
     exit when cc%notfound;
     ...
    end loop;
    close cc;
    等等,也可以使用for游标循环。
    May this can help u!
      

  2.   

    to snowy_howe(天下有雪),游标加在那个地方?我的那个存储过程会多次调用的,不可能加在那里面的,要根据多个条件找到不同的OrderID,然后要处理每一个Order,能否给写个例子,就是根据不同条件,找到相应的Order(一个集合),然后再调用我的那个存储过程