你可以写个程序来运行啊,或者是写个windows服务,定时的运算
相信程序的逻辑,楼主都是清楚的
我用antlr解析的公式。不知道怎么调用- -
可以sql查询中就进行计算,into表
比如
select a.人名,b.基本工资,c.考勤天数,d.奖金,e.税率,(b.基本工资*考勤天数/应出勤天数+奖金)*(1-税率) as 实际发送工资 into 应发工资201211191350 from 人员表 a left join 基本工资表 b on a.userid=b.userid left join 考勤表 c on a.userid=c.userid left join 奖金表 d on a.userid=d.userid left join 税金表 e on (b.基本工资*考勤天数/应出勤天数+奖金) between 税金区间
建议用存储过程实现,分为三步:
1、从众多表中查出数据源
2、根据业务逻辑进行数据拼凑
3、将计算完的数据插入到新表中
eg:
create or replace procedure XXX(flag out varchar2) is tempnum varchar(10); begin flag := '1'; tempnum := 0; ---取数据源 for resoutce_cour in (select tce.id from tresource tce where not exists (select 1 from trole_resource tre where tre.resource_id = tce.id and tre.role_id = 1000) and tce.name in ('xx', 'xx', 'xx')) loop dbms_output.put_line(resoutce_cour.id); --拼凑数据 tempnum :=resoutce_cour.id||'abc';
...
...
--插入新表
insert into trole_resource values ((select max(id)+1 from ddd), tempnum .. ); end loop; commit; exception when others then flag := '0'; rollback; end XX;