比如三月份读写TB_LOG_03表,4月份读写TB_LOG_04表。CREATE OR REPLACE FUNCTION TESTFunc(v_ID in varchar2) return number as
PRAGMA AUTONOMOUS_TRANSACTION; --事务
  v_count number(10);
Begin
  --三月份查询TB_LOG_03表
  select count(1) into v_count from TB_LOG_03 t where t.id = v_ID;  If v_count > 0 Then
    --三月份写TB_LOG_03表
    insert into TB_LOG_03 (ID, Name)
    values  ('123','zhangsan');      commit;--提交
    return 1;
  Else
    return 0;
  End If;Exception
  When Others Then
    Return -1;
End GET_COUNT;
---------------------调用Function
select TESTFunc('123') AS retVal from dual;

解决方案 »

  1.   


    CREATE OR REPLACE FUNCTION TESTFunc(v_ID in varchar2) return number as
    PRAGMA AUTONOMOUS_TRANSACTION; --事务
      v_count number(10);
      v_month char(2);
      v_sql varchar2(2000);
    Begin
    select to_char(sysdate,'mm') into v_month from dual;

    v_sql := 'select count(1) into '||v_count||' from TB_LOG_||v_month||' t where t.id='||v_id;  execute immediate v_sql;
      commit;
      If v_count > 0 Then
        v_sql := 'insert into TB_LOG_'||v_month||'(ID,Name) values(''123'',''zhangsan'')';
    execute immediate v_sql;
    commit;
        return 1;
      Else
        return 0;
      End If;Exception
      When Others Then
        Return -1;
    End GET_COUNT;
    ---------------------调用Function
    select TESTFunc('123') AS retVal from dual;