列名在哪里?
 'whq'||i=1 
i是number型,最好用TO_CHAR转换一下

解决方案 »

  1.   

    列名在哪里?
     'whq'||i=1 
    i是number型,最好用TO_CHAR转换一下
    ‘whq’||i   就是列名,由于列名是随着i 的值变化的。是不是这样的写法不行啊
      

  2.   

    列名在哪里?
     'whq'||i=1 
    i是number型,最好用TO_CHAR转换一下
    ‘whq’||i   就是列名,由于列名是随着i 的值变化的。是不是这样的写法不行啊
    这样肯定不行啊,除非你用动态SQL
      

  3.   

    列名在哪里?
     'whq'||i=1 
    i是number型,最好用TO_CHAR转换一下
    ‘whq’||i   就是列名,由于列名是随着i 的值变化的。是不是这样的写法不行啊
    这样肯定不行啊,除非你用动态SQL
    也就是列名变化不行,但是列的值变化可以的事吗?
      

  4.   

    列名在哪里?
     'whq'||i=1 
    i是number型,最好用TO_CHAR转换一下
    ‘whq’||i   就是列名,由于列名是随着i 的值变化的。是不是这样的写法不行啊
    这样肯定不行啊,除非你用动态SQL
    也就是列名变化不行,但是列的值变化可以的事吗?
    列名可以变化,用动态SQL,如下:create or replace procedure whq_henkel is
      cursor cur_whq(vv_itemcode in varchar2) is
        select store_id
          from tmp_whq_henkel_godeep
         where itemcode = vv_itemcode
           and wt03 > 0;
      str      varchar2(2000);
      l_result varchar2(1000);
    begin
      for i in 2 .. 9 loop
        for cur_whq_v1 in cur_whq('K00' || i) loop
          str := 'update tmp_whq_henkel_godeep set whq' || to_char(i) || '=1 ' ||
                 'where store_id =' || cur_whq_v1.store_id ||
                 ' and itemcode = ''K001''';
          execute immediate str;
        end loop;
      end loop;
      commit;
    end;