create or replace procedure hjzl_sound_cjjc as  
   --定义市州表的游标
   Cursor myCursor is select zhan_name from td_hjzl_sound_zhan; 
   --定义循环变量
   my_name varchar2(50);
   test varchar2(30) := 'test str';
begin
  --实体表:TD_HJZL_SOUND_TRAFFIC_BB  
  --基础数据表:td_hjzl_sound_trafficinfo
  
  --对14个内容进行循环
  for my_name in myCursor loop 
      begin      
          dbms_output.put_line(test);
          dbms_output.put_line(my_name);
      end;
  end loop;  
end hjzl_sound_cjjc;

解决方案 »

  1.   

      dbms_output.put_line(my_name);
    改成
      dbms_output.put_line(my_name.zhan_name);
    前面的my_name也不用聲明,且你的聲明是錯的。
    my_name應該是游標的一個record
      

  2.   

    定义的变量跟你的字段类型不匹配吧?你 desc td_hjzl_sound_zhan; -- 看一下 zhan_name字段的类型是什么?
      

  3.   


    create or replace procedure hjzl_sound_cjjc as   
      --定义市州表的游标
      Cursor myCursor is select zhan_name from td_hjzl_sound_zhan;  
      --定义循环变量
      test varchar2(30) := 'test str';
    begin
      --实体表:TD_HJZL_SOUND_TRAFFIC_BB   
      --基础数据表:td_hjzl_sound_trafficinfo
       
      --对14个内容进行循环
      for my_name in myCursor loop  
      begin   
      dbms_output.put_line(test);
      dbms_output.put_line(my_name.zhan_name);
      end;
      end loop;   
    end hjzl_sound_cjjc;
      

  4.   

    create or replace procedure hjzl_sound_cjjc as  
      Cursor myCursor is select zhan_name from td_hjzl_sound_zhan; 
      test varchar2(30) := 'test str';
    begin
      for my_name in myCursor loop 
        begin  
          dbms_output.put_line(test);
          dbms_output.put_line(my_name.Zhan_name);
        end;
      end loop;
    end hjzl_sound_cjjc;
    /
      

  5.   

    -- 给个例子给你:
    CREATE TABLE houyueUser_sum(
    cdate VARCHAR2(10),
    huoyue_sum NUMBER(18,0)
    );declare
      v_year varchar2(16);
      v_week varchar2(2);
      v_active_user number(18,0);
      v_active_user_real number(18,0);  v_active_rate number(18,6);
      v_active_from number(18,6);
      v_active_inc number(18,6);
      v_active_rand number(18,6);  cursor c_ur is 
        select t1.year, t1.week, t1.fromDate, t1.toDate,
               sum(t2.huoyue_sum) as active_user
          from year_week2 t1 inner join houyueUser_sum t2 on 
               t2.cdate>=t1.fromDate and t2.cdate<=t1.toDate
         group by t1.year, t1.week, t1.fromDate, t1.toDate
         order by t1.year, t1.week;begin
      v_active_from := 0.29;
      v_active_inc := 0.004;
      for r_ur in c_ur loop
        v_year := r_ur.year;
        v_week := r_ur.week;
        v_active_user := r_ur.active_user;
        select dbms_random.value(-0.004,0.004) into v_active_rand from dual;    v_active_rate := v_active_from + v_active_rand + v_active_inc ;
        v_active_user_real := v_active_user * v_active_rate;
        -- dbms_output.put_line(to_char(v_active_rate));
        update year_week2 set active_user = v_active_user_real, active_rate = v_active_rate where year = v_year and week = v_week;
        v_active_inc := v_active_inc + 0.0065;
      end loop;
      commit;
    end;
    /
      

  6.   


    create or replace procedure hjzl_sound_cjjc as     Cursor myCursor is select zhan_name from td_hjzl_sound_zhan;  
      test varchar2(30) := 'test str';
    begin  for my_name in myCursor loop    dbms_output.put_line(test);
      dbms_output.put_line(my_name.zhan_name);
     
      end loop;   
    end hjzl_sound_cjjc;
      

  7.   


    --或者这样create or replace procedure hjzl_sound_cjjc as     Cursor myCursor is select zhan_name from td_hjzl_sound_zhan;  
      test varchar2(30) := 'test str';
      type my_name_type is table of td_hjzl_sound_zhan.zhan_name%type;
      my_name_rec my_name_type:=my_name_type();
    begin
       open myCursor;
       fetch myCursor bulk collect into my_name_rec;
       for i in my_name_rec.first..my_name_rec.last loop
       dbms_output.put_line(test);
       dbms_output.put_line(my_name_rec(i));
       end loop;
       close myCursor;
      
    end hjzl_sound_cjjc;
      

  8.   

    引用cursor里的变量,要用'cursor名.字段名'的形式.create or replace procedure hjzl_sound_cjjc as   
      --定义市州表的游标
      Cursor myCursor is select zhan_name from td_hjzl_sound_zhan;  
      --定义循环变量
      my_name varchar2(50);
      test varchar2(30) := 'test str';
    begin
      --实体表:TD_HJZL_SOUND_TRAFFIC_BB   
      --基础数据表:td_hjzl_sound_trafficinfo
       
      --对14个内容进行循环
      for my_name in myCursor loop  
      begin   
      dbms_output.put_line(test);
      dbms_output.put_line(my_name.zhan_name);
      end;
      end loop;   
    end hjzl_sound_cjjc;
      

  9.   

    游标里存放的不是zhan_name么,取出打印的也要是zhan_name。