create or replace trigger oaSyncHr_trigger
  after
  update of FLOW_FLAG on workflow_file
  for each row  declare
    v_fieldNum varchar2(100);
    v_fieldNumValue varchar2(100);
    v_fieldNum_sql varchar2(2000);
begin
  if (:new.FLOW_FLAG = 2)
    then
      if(:new.FLOW_ID = 40002022)
      then
       select flowfield.fieldserial into v_fieldNum from workflow_flowfield flowfield where flowfield.flowtype_id = 40000442 and flowfield.name = N'得分合计';
       
        v_fieldNum_sql := 'update gztygtx set gzbxpgdf=(select w.fieldNum'|| v_fieldNum ||' from workflow_file w where w.id = 187004627 ) where nm=1';
     execute immediate  v_fieldNum_sql;
       end if;
       
    end if;
    
end;运行时一直提示 execute immediate  v_fieldNum_sql;这里错误,
把 v_fieldNum_sql的值直接拿出来运行又是成功的;
这是什么问题

解决方案 »

  1.   

    我要实现的功能是:
    A表中的字段有fieldNum1到fieldNum30   现在在B表查到一个数字28,怎么去A表查fieldNum28的值如果有其他解决的方法也可以
      

  2.   

    你把 select w.fieldNum'|| v_fieldNum ||' from workflow_file w where w.id = 187004627  into 到另外一个变量
    然后用字符串拼接
    再execute immediate v_fieldNum_sql := 'update gztygtx set gzbxpgdf=' ;
    select w.fieldNum'|| v_fieldNum ||' INTO v_fieldNum_sql1  from workflow_file w where w.id = 187004627  ;
      v_fieldNum_sql :=v_fieldNum_sql ||v_fieldNum_sql1  ||'where nm=1';
    execute immediate  v_fieldNum_sql ;
      

  3.   

    报的什么错?另外应该加一个commit显示提交。
      

  4.   

    w.fieldNum'|| v_fieldNum ||'  改成 w.fieldNum||'''||v_fieldNum ||'''||'
      

  5.   

    w.fieldNum后少打个'