当前位置: 网学 > 编程文档 > 其他类别 > 正文

Openbravo开发手册

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/07
义的变量来替换SQL%ROWCOUNT。

%ISOPEN,%NOTFOUND

PostgreSQL不支持%ISOPEN和%NOTFOUND,但可以在存储过程内部定义一个boolean变量,然后当游标打开或关闭时手工去更新这个变量的值。



当定义表时,如果列名是关键字要用用引号引起来。如:

CREATE TABLE AD_TRACE
(
  "WHEN"  TIMESTAMP                   NOT NULL,
  NO      NUMERIC        DEFAULT 0    NOT NULL,
  WHAT    VARCHAR(2000)               NOT NULL
);

列WHEN用引号引起来以避免转到PostgreSQL后出现问题。

同样在约束、解发器、存储过程、视图和函数中也要这样处理。

函数

可以使用PERFORM和SELECT调用函数。因为PostgreSQL不支持默认参数,可以定义一个带有默认参数的重载函数。

另外如果要使自动翻译能正常工作,你应该遵循以下的建议:

    AS和IS的左边不能有空格
    函数名不能用引号
    函数中,END前不能有空格。

存储过程

在PostgreSQL中有两种方法调用存储过程:

    变量名:=存储过程名(...)
    使用SELECT。这种方法用于存储过程返回多个参数时使用。

视图

PostgreSQL不支持可更新视图。如果要通过视图更新要创建一系列的规则。

在PostgreSQL中没有USER_TABLES和USER_TAB_COLUMNS。应该根据PostgreSQL的pg_class或pg_attribute表来创建。

触发器

触发器的规则如下:

    通常来说,父表中的触发器不应该修改子表中的列,因为子表中的触发器经常会参考父表中的数据,否则会引起mutating table的错误。
    触发器的名称不要用引号引起来,否则PostgreSQL会作为文本处理。
    所有的触发器都要有DECLARE在合法的注释前。
    PostgreSQL不支持延迟计算值。如下面的语句在Oracle中可以运行但不能在PostgreSQL中运行:

    IF INSERTING OR (UPDATING AND :OLD.FIELD = '') THEN

正确的方法是:

IF INSERTING THEN ...
IF UPDATING THEN
IF :OLD.NAME = '' THEN

PostgreSQL中总会有返回值。按不同的操作类型分别返回OLD(DELETE)或NEW(INSERT/UPDATE)。

如果使用自动翻译应注意:

    最后一个EXCEPTION的左边不能有空格。自动翻译者用最后一个EXCEPTION来设置返回值。
    最后一个END的左边不能有空格。缩排用于决定函数据结束。

序列数

PostgreSQL中的bigInts类型是18位的。将

sequence_name.NEXTVAL



nextval("sequence_name")

代替。如果是使用自动转换,这个会自动的修改。

命令

下面列出了从Oracle转换到PostgreSQL时要修改的语句:
Oracle PostgreSQL
SQLCODE     SQLSTATE
RAISE;     RAISE EXCEPTION ;
RAISE_APPLICATION_ERROR     RAISE ERROR ;
DBMS.OUTPUT     RAISE NOTICE '%'
ROWNUM     LIMIT
MINUS     EXCEPT
ISREFCURSOR     REFCURSOR
EXECUTE IMMEDIATE     EXECUTE
EXCEPTION NO_DATA_FOUND     EXCEPTION DATA EXCEPTION
COMMIT     
ROLLBACK     RAISE EXCEPTION

支持PostgreSQL8.3

为了支持PostgreSQL8.3,Openbravo2.40alpha已经调整了源代码。为了兼容这个版本的P
  • 下一篇资讯: 如何部署Openbravo 2.5
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号