declare     
  v_str varchar2(8000);   
  v_val varchar2(100); 
  cursor c_test is select distinct danqianshijian from fwt_dangriyunli;   
begin   
  set v_str ='select yunshugongsi,xianlu';   
  open c_test;   
  Loop   
  fetch c_test into v_val;   
  exit when c_test%NotFound;   
  set v_str = v_str +',decode(fd.danqianshijian,'+ v_val +', fd.dangribaoban, 0)  as + ['+ v_val +']';
  End Loop;   
  close  c_test;
  set v_str =v_str+ 'from fwt_dangriyunli fd';
  dbms_output.put_line(v_str);
end;

解决方案 »

  1.   

    你sql里的字段写错了,和你的表中的字段不一致自己检查一下吧
      

  2.   

    还有Oracle里连接字符串不是使用+ 而是使用||  
      

  3.   

    还有Oracle里连接字符串不是使用+ 而是使用||  ORA-00922 missing or invalid optionCause: An invalid option was specified in defining a column or storage clause. The valid option in specifying a column is NOT NULL to specify that the column cannot contain any NULL values. Only constraints may follow the datatype. Specifying a maximum length on a DATE or LONG datatype also causes this error.Action: Correct the syntax. Remove the erroneous option or length specification from the column or storage specification.
      

  4.   

    把+改为||
    把=改为:=如:
    set v_str =v_str+ 'from fwt_dangriyunli fd'; 
    改为:
    v_str:=v_str||'from fwt_dangriyunli fd'; 
      

  5.   

    declare    
      v_str varchar2(8000);  
      v_val varchar2(100); 
      cursor c_test is select distinct danqianshijian from fwt_dangriyunli;  
    begin  
      v_str :='select yunshugongsi,xianlu';  
      open c_test;  
      Loop  
        fetch c_test into v_val;  
        exit when c_test%NotFound;  
        v_str := v_str ||',decode(fd.danqianshijian,'|| v_val ||', fd.dangribaoban, 0)  as "'|| v_val +'"'; 
      End Loop;  
      close  c_test; 
      v_str :=v_str|| ' from fwt_dangriyunli fd'; 
      dbms_output.put_line(v_str); 
    end;
      

  6.   

    set v_str = v_str +',decode(fd.danqianshijian,'+ v_val +', fd.dangribaoban, 0)  as + ['+ v_val +']'; 
     
    set 也不是oracle的语法