注册

执行动态sql using 多个变量时报错, 无效的列名[:<6 "v">],请教达梦各位老师呐!

阿杰升级路 2023/12/16 660 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:WIN11
【CPU】:
【问题描述】*:执行动态sql 时报错,请教社区各位大神一下;
报错截图:image.png
调试:image.png

  declare         
  strChangeItemsText varchar(100) :='cd=1&cdtype=2&Lcdphone=3';      
  intChangeKind int :=1;    
  intAreaCode varchar(20) :='456';     
  strInfoId varchar(48) :='84B39F03-9446-4E3D-A2AC-0005ADDD5A31';
  intid varchar(50) :='175B215B-5F75-4F86-A34D-D9C2BBD37C95'; 
  strfields varchar(500); --字段    
  strconvertfields varchar(1000);--字段类型转换       
  begin  
   --字段类型转换的字段     
   select strconvertfields=
   listagg(
      substring(val,1,REGEXP_INSTR(val,'=')-1)+'=convert(varchar(256),'+substring(val,1,REGEXP_INSTR(val,'=')-1)+')'
        ,',')
   from  TABLE (KF_PUB_SPLITSTRBYCHAR(strChangeItemsText,'&')); 
  --字段
   select strfields=
   listagg(
         substring(val,1,REGEXP_INSTR(val,'=')-1)+''
          ,',')
   from TABLE(KF_PUB_SPLITSTRBYCHAR(strChangeItemsText,'&'));
   
      EXECUTE IMMEDIATE 'select v.*, f.Alias  from a f
    inner join ( select  id=:v,areacode=:v, fields=substring(val, 1, REGEXP_INSTR(val,''='')-1) , 
         newval=substring(Val, REGEXP_INSTR( val,''='')+1, len(val)) 
         from TABLE(KF_PUB_SPLITSTRBYCHAR(:v, ''&''))
         ) as v on v.areacode=f.AreaCode and v.fields=f.Item ' USING intid,intAreaCode,strChangeItemsText;
         
         
   EXECUTE IMMEDIATE ' 
   --insert into c(I_ID,areacode,fields,newval,alias,oldval)    
    select v.*, f.Alias, t.oldval  from b f
    inner join
       (
       select  id=:v,areacode=:v, fields=substring(val, 1, REGEXP_INSTR(val,''='')-1) , 
       newval=substring(val, REGEXP_INSTR(val,''='')+1, len(val)) 
         from TABLE(KF_PUB_SPLITSTRBYCHAR(:v, ''&'')) 
       ) v on v.areacode=f.AreaCode and v.fields=f.Item
     inner join
       (
       select :v from  d where facid=:v --and areacode=:v
       ) aa
       unpivot(
	   oldval for fields in(:v)
              ) t on v.fields=t.fields' USING intid,intAreaCode,strChangeItemsText,strconvertfields,strInfoId,strfields;
   --commit;
  end       
回答 0
暂无回答
扫一扫
联系客服