只要在循环内就不行LS-00363 expression 'string' cannot be used as an assignment target
Cause: A literal, constant, IN parameter, loop counter, or function call was mistakenly used as the 
target of an assignment. For example, the following statement is illegal because the assignment 

解决方案 »

  1.   

    strlen := LENGTH(INDEXCODES);
    改为:
    strlen := LENGTHB(INDEXCODES);
      

  2.   

    while INSTR(INDEXCODES,',',1,1)>-1
      loop
          firstspot := INSTR(INDEXCODES,',',1,1);
          strlen := LENGTH(INDEXCODES);
          indexcode :=SUBSTR(INDEXCODES,1,firstspot-1);
       
          INDEXCODES := SUBSTR(INDEXCODES,firstspot,strlen);《==提示此句出错:表达式"INDEXCODES"不能用做赋值目标  end loop;
    不知道你要做的是什么  
      字符串 qwef,dfwer,sdf,ewf,w,fwe
    你是要取出来 indexcode=qwef
                           dfwer
                           sdf
                           ewf
                           w
                           fwe ?你的INDEXCODES是个什么类型的变量?
    如果是函数或者过程的参数,则必须是 IN OUT型的 否则是不能被赋值的
    其实你只须自己定义一个变量就行了
    v_str VARCHAR2(200);
    BEGIN
      v_str := INDEXCODES;
     while INSTR(INDEXCODES,',',1,1)>-1
      loop
          firstspot := INSTR(v_str,',',1,1);
          strlen := LENGTH(v_str);
          indexcode :=SUBSTR(v_str,1,firstspot-1);
       
          v_str:= SUBSTR(v_str,firstspot,strlen);
      end loop;...
      

  3.   

    哦,错了while INSTR(INDEXCODES,',',1,1)>-1
    应该为
    while INSTR(v_str,',',1,1)>0
    还有一个问题   while INSTR(INDEXCODES,',',1,1)>-1
      将使你的sql陷入死循环……原因:如果INDEXCODES中没有 ',' , instr将返回0,而始终>-1
      

  4.   

    再补充一下:  IF substr(v_str,-1) <> ',' THEN
        v_str := v_str || ',';
      END IF;这样可以避免你取不出最后1段字符串
      

  5.   

    谢谢白开心,我就是要实现
     字符串 qwef,dfwer,sdf,ewf,w,fwe
    你是要取出来 indexcode=qwef
                           dfwer
                           sdf
                           ewf
                           w
                           fwe ?把分都给你了