我有两张桌子:
1.Tbl_project
fld_id fld_allocated_days
1 10
2 3
3 1
4 99
2.Tbl_project_timesheet
fld_id fld_allocated_time fld_project_id
1 8.00 1
2 8.00 1
3 8.00 2
4 8.00 3
5 8.00 2
6 8.00 2
7 8.00 1
8 8.00 4
9 8.00 1
- fld_project_id从tbl_project引用(fld_id)
我想创建一个函数,将表tbl_project中的列fld_allocated_days与来自tbl_project_timesheet的列SUM(fld_allocated_time)进行比较。
如果第一列(fld_allocated_time)低于秒(fld_allocated_days),则在表tbl_project_timesheet上插入。
其中一个函数参数是p_project_id,它将选择插入分配时间的项目。
我有一个函数可以插入已分配的时间但不检查是否超过分配的天数。
CREATE OR REPLACE FUNCTION function_add_timesheet_record( p_project_id integer, p_allocated_time numeric)
RETURNS void AS
BEGIN
INSERT INTO tbl_project_timesheet(fld_project_id,fld_allocated_time)
VALUES (p_project_id, p_allocated_time);
END
答案 0 :(得分:1)
根据上述评论,我们假设来自1 day
的{{1}}等于tbl_project
来自8 hours
。这样,获取您提供的数据项目1有6个缺失日,项目4有98个缺失日。我们将这些数据转换为秒并比较两个表中的值。
然后我们用一整天的数量填充一个数组,并将数组附加到除法的其余部分(如果有不完整的天数)。
然后我们不再使用数组,因此每行(每天)有8个小时。最后我们插入数据。
tbl_project_timesheet