ostgreSQL,最大的修改是非字符数据不再自动转换为TEXT类型。
之前,如果提供一个非字符型的值给一个需要字符型参数的函数或一个操作时会自动转换为字符型,大部份(不是所有)的内建类型都是这样处理的。对于这种情况现在都需要进行显示的类型转换。例如,以下表达式之前是可以运行的:
substr(current_date, 1, 4)
23 LIKE '2%'
但现在会提示“函数不存在”或“操作不存在”的错误。需要进行显示的类型转换:
substr(current_date::text, 1, 4)
23::text LIKE '2%'
(当然你也可以使用CAST())。这样修改的原因是因为这些自动类型转换经常会引起一些无法预知的错误。如在以前的版本中,下面的表达式是语法正确的但运行的结果不是预期的:
current_date < 2017-11-17
这实际上是日期型与整型的比较,不应该拒绝这样的操作(现在已经是拒绝了)。但是在以前这样的表达式会转换成字符型与字符型比较。
但char(n)和varchar(n)仍然会自动转换成TEXT类型。尽管字符串连接(||)操作符仍然会进行自动类型转换,但至少其中一个操作符应该是字符型的。
因为以上的原因,PostgreSQL8.3在存储过程和数据库源代码文件中都要求进行显示的类型转换。这个大范围的修改已经在Openbravo2.4alpha中完成。例如,下面的表达式可以在Oracle/PostgreSQL中正确运行:
substr(TO_CHAR(current_date), 1, 4)
TO_CHAR(23) LIKE '2%'
Openbravo的源代码和存储过程中已经做了许多类型显示转换的操作以支持PostgreSQL8.3。主要的修改是:
函数的类型转换:当在PostgreSQL中调用函数时,参数必须匹配。一个典型的例子是在XSQL文件中的AD_COLUMN_IDENTIFIER函数,在存储过程中也是同样处理的。
...
AD_COLUMN_IDENTIFIER(TO_CHAR('C_Invoice'), TO_CHAR(p.C_INVOICE_ID), TO_CHAR(?)) AS INVOICE
...
操作时的类型转换:例如传递一个数字时作为标识符或日期到SQL语句:
...
SELECT STDPRECISION
FROM C_CURRENCY
WHERE C_CURRENCY_ID = TO_NUMBER(?)
AND CREATED <= TO_DATE(?)
...
只要进行这些修改就可以兼容PostgreSQL。 Openbravo2.4alpha已经通过了与PostgreSQL8.3的可接受测试。
修饰名称和描述内容的指南
说明内容的修辞指南
Openbravo在数据字典中的字段描述主要有两个目的:
直接说明了字段如何使用的
一些附加的信息
在阅读本节前,要知道在Openbravo ERP中已经有超过5000个的例子。强烈建议在需要时参考已存在的例子。
时态:最好使用现在时,如果有必要可以使用过去时。
人称:
Windows和Tabs:第二人称
元素:第三人称(其实是要避免我,你,他或她都混在一起)
单/复数:
Windows和Tabs:用复数
元素:用单数
A/n vs The:当指一般的东西时用A,当指特定的东西时用The。
仅用下面的某一项来描述Window/Tab的结构
View-仅用于某些只读的内容时
Create-当需要创建新的内容时使用,并且可以修改
Add-当一些内容之前已经输入过,但之后可以修改的情况
Edit-当需要修改信息时
Define-当需要