壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2557|回复: 1

Oracle HRMS Payroll Fast formula 公式编写技巧

[复制链接]
发表于 2008/3/13 10:08:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
公式编写技巧
编写公式时,您应该使用多种技巧以确保公式易于阅读、使用和理解。
备注公式
在公式中加入备注是一种好的做法,这样可以向其他人解释公式的用途。
例如您可以给公式命名为:

/*
公式:出勤奖 */
并这样解释公式:

/*
使用此公式计算文员的年奖金。员工按其薪金的百分比

(如果过去六个月的出勤天数为 183 天或以上)或按比

例(如果过去六个月的出勤天数少于 183 天)获得奖


*/
Oracle FastFormula 会忽略备注分隔符 /* */ 之间的内容。您可以在公式的任何位置添加备注,而不会影响公式的执行。
警告:请不要在备注中又添加备注。这会使 Oracle FastFormula 返回语法错误。
您可以使用备注解释公式的用途。例如您可以使用备注来解释由谁决定奖金百分比:

INPUTS ARE
salary_amount,


start_date (date),


end_period_date (date),


bonus_percentage /*
在董事会层确定 */
您还可以使用备注来标注目前无需使用的公式部分。例如您可以加入第五个 employee_status 输入,以确保全职状态的员工可获得奖金。但由于您还不具有各种状态,所以您目前不需要第五个输入。

INPUTS ARE
salary_amount,


start_date (date),


end_period_date (date),


bonus_percentage /*
在董事会层确定 */


/*
employee_status
(文本) */
输入公式时可以随意使用备注和空白。这使公式更易阅读和理解,而且也不会影响执行或内存。对相同原因可使用缩排方式,这尤其适用于要使用括号来控制处理顺序的情况。
在公式开头的备注中加入以下信息是一种好的做法:
    • 公式标题及其用途的简短备注
    • 公式输入的说明
    • 需更新的变量和常数列表
    • 能够收到公式直接结果的要素的输入值说明
    • 公式计算的说明
    • 管理信息,例如,负责管理受公式影响的收入、扣除额或费用的办公室的名称、地址和电话号码
    • 公式修改的日期、输入编辑内容的人员姓名以及可能的更改原因
ALIAS 语句
系统在创建数据库项目时会同时为数据库项目命名,但有时这些名称因为太长而不适用于公式。您不能缩短数据库项目(或全局值)本身的名称,但可以设置另一个较短的名称用于公式。例如:

ALIAS
as_overtime_qualifying_length_of_service AS ot_qls
在公式的剩余部分,您可以将别名(此例为 ot_qls)当作实际变量使用。
注意:使用别名比将数据库项目分配至一个具有简称的局部变量效率更高。
Default 语句
Default 语句可用来设置输入值或数据库项目的默认值。如果在您运行公式时数据库项目为空或未提供输入值,公式就使用默认值。例如:

DEFAULT FOR hourly_rate IS 3.00

X = hours_worked * hourly_rate

IF hourly_rate WAS DEFAULTED


THEN


MESG = 'Warning: hourly rate defaulted'
此例为数据库项目 hourly_rate 设置了默认值 3.00。如果 hourly_rate 在数据库中为空 (NULL),公式就使用默认值 3.00。公式使用 'WAS DEFAULTED' 测试来检测默认值何时被使用,并在默认值被使用时发出警告消息。
注意:对于可能为空的数据库项目必须使用 Default 语句。数据库项目窗口包含一个标为需要默认值复选框。对于可能为空的数据库项目要选定此复选框。在公式窗口中选择显示项目按钮时,会出现数据库项目窗口。
编写有效工资单计算公式
以下准则一般适用于普通工资单运行:
    • 要素的公式越长,处理时间也越长。
    • 为分配输入的要素越多,分配的处理时间就越长。
    • 处理一个与较长公式关联的要素通常比处理两个分别与一个较短公式关联的相关公式要快。
    • 系统中要素和公式的总数对处理效率影响不大。影响处理时间的是各个分配的要素数量。
变量名称和别名
为提高可读性,请使用简短而有意义的名称。名称长度对执行或内存均没有影响。如果数据库项目或全局值的名称过长,可使用别名。
Input 语句
尽量使用 Default 语句,而不是数据库项目。这将会使公式的处理速度提高 10 倍。这样就无需访问输入值的数据库,从而加快工资单的运行。
低效:

Salary = Salary_annual_salary / 12


RETURN Salary
高效:

INPUTS ARE Annual_salary

Salary = Annual_salary / 12


RETURN Salary
日期基本式
只有在操作数为变量时才能使用 TO_DATE 函数。
低效:

Start_date = TO_DATE ( '1992-01-12 00:00:00' )
高效:

Start_date = '1992-01-12 00:00:00' (date)
单项表达式
为不引起混淆,可以在简明公式中使用单项表达式。
低效:

Temp = Salary / Annualizing_factor

Tax = Temp * 3
高效:

Tax = (Salary / Annualizing_factor) * 3
数据库项目
除非有需要,否则请勿引用数据库项目。某些人员有时会在公式顶端列出公式可能需要的所有数据库项目,以为这样有助于加快 Oracle FastFormula 的处理。实际上,这会造成不必要的数据库调用,从而降低处理速度。
低效:

S = Salary

A = Age

IF S < 20000 THEN

IF A < 20 THEN

Training_allowance = 30

ELSE

Training_allowance = 0
高效:

IF Salary < 20000 THEN

IF Age < 20 THEN

Training_allowance = 30

ELSE

Training_allowance = 0
第一个实例始终引起数据库读取 Age,而第二个实例只有在 Salary 低于 20000 时才读取 Age
发表于 2013/7/16 11:16:23 | 显示全部楼层
非常感谢分享~  支持~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 19:53 , Processed in 0.014741 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表