马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622 。
您需要 登录 才可以下载或查看,没有帐号?注册
x
编写公式时,您应该使用多种技巧以确保公式易于阅读、使用和理解。 在公式中加入备注是一种好的做法,这样可以向其他人解释公式的用途。
/*
使用此公式计算文员的年奖金。员工按其薪金的百分比
(如果过去六个月的出勤天数为 183 天或以上)或按比
例(如果过去六个月的出勤天数少于 183 天)获得奖
Oracle FastFormula 会忽略备注分隔符 /* 和 */ 之间的内容。您可以在公式的任何位置添加备注,而不会影响公式的执行。 警告:请不要在备注中又添加备注。这会使 Oracle FastFormula 返回语法错误。 您可以使用备注解释公式的用途。例如您可以使用备注来解释由谁决定奖金百分比:
INPUTS ARE
salary_amount,
bonus_percentage /*
在董事会层确定 */
您还可以使用备注来标注目前无需使用的公式部分。例如您可以加入第五个 employee_status 输入,以确保全职状态的员工可获得奖金。但由于您还不具有各种状态,所以您目前不需要第五个输入。
INPUTS ARE
salary_amount,
bonus_percentage /*
在董事会层确定 */
/*
employee_status(文本) */
输入公式时可以随意使用备注和空白。这使公式更易阅读和理解,而且也不会影响执行或内存。对相同原因可使用缩排方式,这尤其适用于要使用括号来控制处理顺序的情况。 - 管理信息,例如,负责管理受公式影响的收入、扣除额或费用的办公室的名称、地址和电话号码
- 公式修改的日期、输入编辑内容的人员姓名以及可能的更改原因
系统在创建数据库项目时会同时为数据库项目命名,但有时这些名称因为太长而不适用于公式。您不能缩短数据库项目(或全局值)本身的名称,但可以设置另一个较短的名称用于公式。例如:
ALIAS
as_overtime_qualifying_length_of_service AS ot_qls
在公式的剩余部分,您可以将别名(此例为 ot_qls)当作实际变量使用。 注意:使用别名比将数据库项目分配至一个具有简称的局部变量效率更高。 Default 语句可用来设置输入值或数据库项目的默认值。如果在您运行公式时数据库项目为空或未提供输入值,公式就使用默认值。例如:
DEFAULT FOR hourly_rate IS 3.00
X = hours_worked * hourly_rate
IF hourly_rate WAS DEFAULTED
MESG = 'Warning: hourly rate defaulted'
此例为数据库项目 hourly_rate 设置了默认值 3.00。如果 hourly_rate 在数据库中为空 (NULL),公式就使用默认值 3.00。公式使用 'WAS DEFAULTED' 测试来检测默认值何时被使用,并在默认值被使用时发出警告消息。 注意:对于可能为空的数据库项目必须使用 Default 语句。“数据库项目”窗口包含一个标为“需要默认值”复选框。对于可能为空的数据库项目要选定此复选框。在“公式”窗口中选择“显示项目”按钮时,会出现“数据库项目”窗口。 - 处理一个与较长公式关联的要素通常比处理两个分别与一个较短公式关联的相关公式要快。
- 系统中要素和公式的总数对处理效率影响不大。影响处理时间的是各个分配的要素数量。
为提高可读性,请使用简短而有意义的名称。名称长度对执行或内存均没有影响。如果数据库项目或全局值的名称过长,可使用别名。 尽量使用 Default 语句,而不是数据库项目。这将会使公式的处理速度提高 10 倍。这样就无需访问输入值的数据库,从而加快工资单的运行。
Salary = Salary_annual_salary / 12
Salary = Annual_salary / 12
只有在操作数为变量时才能使用 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 = (Salary / Annualizing_factor) * 3
除非有需要,否则请勿引用数据库项目。某些人员有时会在公式顶端列出公式可能需要的所有数据库项目,以为这样有助于加快 Oracle FastFormula 的处理。实际上,这会造成不必要的数据库调用,从而降低处理速度。 第一个实例始终引起数据库读取 Age,而第二个实例只有在 Salary 低于 20000 时才读取 Age。 |