create or replace procedure tqgy_yyxx_test
as
V_L3SAMPLEID    VARCHAR2(20);
V_INSPCHAR   VARCHAR2(120);
V_INSPECTRESULT    VARCHAR2(20);
V_TRANS_DATE VARCHAR2(30);
V_TOTAL1 number;
V_M varchar2(130) ;
S varchar2(500);
cursor cur_jyjg is
     select a.l3sampleid,a.inspchar,a.inspectresult,a.trans_date
       from LES_TQGX_JYJH a
       where a.l3sampleid='030112051509';
begin
   
  open cur_jyjg;
  loop
  fetch cur_jyjg into V_L3SAMPLEID,V_INSPCHAR,V_INSPECTRESULT,V_TRANS_DATE;
  exit when cur_jyjg%notfound;      select count(*) into  V_TOTAL1 from LES_JYSJ_HSQ t  where t.patternno=V_L3SAMPLEID;
     if V_TOTAL1=0 then
      begin
           V_M:=V_INSPCHAR;
           S:='insert into LES_JYSJ_HSQ(patternno,matno,changb,Jih,'||V_M||',QYTIME)
         values('||V_L3SAMPLEID||',substr('||V_L3SAMPLEID||',1,1),substr('||V_L3SAMPLEID||',2,1),substr('||V_L3SAMPLEID||',3,2),
          '||V_INSPECTRESULT||',substr('||V_L3SAMPLEID||',5,6))'; 
         execute immediate S;  
       
       end; 
    end if;  
  end loop;
  close cur_jyjg;  
end;
V_M是数据库一个字段的名称变量,如果直接写成V_M:='字段名',动态sql就可以执行,如果写成 V_M:=V_INSPCHAR,execute immediate S 就报错,V_INSPCHAR的值为什么不能赋给V_M??