我想知道某个任务现在在哪个工段(加工中,待加工,ok),当存在多个加工中的工段,或者多个待加工中共段,
或者多个加工中和待加工中共段,就显示第一个工段名称和状态,当所有工段都完成,在工段 显示ok状态显示 ok
比如: aa完工 bb加工中 cc 加工中  dd 待加工  就显示 工段:bb 状态:加工中 aa完工 bb待加工 cc 待加工  dd 待加工  就显示 工段:bb 状态:待加工 aa完工 bb待加工 cc 加工中  dd 待加工  就显示 工段:bb 状态:待加工 aa完工 bb完工 cc 完中  dd 完工  就显示 工段:ok 状态:待ok现在我想写个函数 FSatue(progress in varchar2,vv1 in varchar2, vv2 in varchar2)来判断在哪个工段和此工段的状态return a||b (a为工段名称,b为工段状态)根据vv1,vv2查询关于vv1,vv2各个工段状态的sql:
select (select decode(t.col3,'Y','完工','N','加工中','待加工') from a t where t.col1 := vv1 and t.col2 := vv2 )  aa ,
(select decode(t.col3,'Y','完工','N','加工中','待加工') from b t where t.col1 := vv1 and t.col2 := vv2 )  bb ,
(select decode(t.col3,'Y','完工','N','加工中','待加工') from c t where t.col1 := vv1 and t.col2 := vv2 )  cc ,
(select decode(t.col3,'Y','完工','N','加工中','待加工') from d t where t.col1 := vv1 and t.col2 := vv2 )  dd 
 from dual;
然后我根据progress(函数参数颇progress);来判断应该向集合中添加那些工段名称和状态
(这就是我想问的问题,不知道oracle 中是否有想hashmap这样功能的集合)
然后遍历集合,当遍历到集合中有待加工或者加工中得纪录,就返回此工段的名称和状态,终止循环 。,如果没有的话表明所有工段OK;
返回OK||ok  
比如progress得值为'aa-bb-cc-dd',
对于上面sql查询出来的结果行,根据progress来判断是否添加到集合中
我用jsp来表达:
     Map map = new hashmap();
   if (progress.indexOf("aa") >-1){
    map .put("aa",rs.getString("aa"));
           
    }
 if (progress.indexOf("bb")>-1){
    map .put("bb",rs.getString("bb"));
           
    }
 if (progress.indexOf("cc")>-1){
    map .put("c,rs.getString("cc"));
           
    }
 if (progress.indexOf("dd")>-1){
    map .put("dd",rs.getString("d"));
           
    }遍历集合:
Iterator it = map.iterator();
String a = "OK";
Stirng b = "OK";
while(it.hasNext()){
  String key=(String)it.next();//工段名称
  String value = map.get(key);//工段状态
  if(value.equals("加工中") ||value.equals("待加工")){
           a = key;//工段名称
           b = value ;//工段状态
  }
}
工段 <%=a%>状态<%=b%>
函数此时要return a||b就是我要的结果 
请问添加数据到集合和遍历来集合这一段在oracle 编程中怎么实现,有没有象hashMap或者数组这样的功能来实现???
          

解决方案 »

  1.   

    case when aa=完工 and bb=加工中  and cc =加工中  and dd =待加工 then  工段=bb 
         when aa=完工 and bb=待加工  and cc =待加工  and dd =待加工 then 工段=bb 
         when aa=完工 and bb=待加工  and cc =加工中  and dd= 待加工 then 工段=bb 
         else  aa完工 bb完工 cc 完中  dd 完工  then 工段=ok 
    end 
    状态同理