http://blog.itpub.net/post/2316/10994

ORACLE与PostgreSql的区别

本文档主要从数据库开发角度来对比二者的区别,有一些二者相同之处,这里不再专门提出。

一、块操作对象

·oracle有存储过程、函数、包、等块操作对象,各功能有所不同。

最常用的是存储过程和函数,过程没有返回值,并可以自由定义传入/出参数;函数必须且只能返回一个参数结果。

oracle还可以定义临时块,使用以下的格式

DECLARE

[参数说明]

BEGIN

操作内容;

END;

/

·postgres里只有函数,没有存储过程,所有的块操作都必须通过函数来完成。即使没有必须有返回值的函数(对应在oracle的存储过程),一般都用

RETURN88;

这样的方法来实现。

postgres的函数需要用引号’’把正文(从DECLARE到最后一个END之间的内容)引起来。这样的话,正文中原有的引号都需要使用引号(’)或者反斜线()来转义。也可以用“$BODY$”来引用正文,这样可以不必转义正文中的引号。

postgres的函数,在正文之后需要加上

LANGUAGE 'plpgsql' VOLATILE;

postgres的触发器也需要由函数来实现。

二、触发器

·oracle的触发器,使用

CREATE [OR REPLACE]TRIGGER 触发器名触发器定义

BEGIN

触发器操作内容;

END;

/

·postgres的触发器,需要通过函数来实现,之前需要通过专门的定义。

三、参数

·oracle函数(存储过程同,本节不另说明)的参数名,直接写在函数的声明中,如

CREATE [OR REPLACE]FUNCTION 函数名 (p_int_id NUMBER) AS……

在程序中可以直接引用参数名称进行操作,如:

SELECT user_label INTO v_label FROM iptca_objects WHERE int_id= p_int_id;

·postgres函数,在函数声明中只写对应的数据类型,而不写明参数的名称,然后在程序体DECLARE后定义变量指向参数。示例:

CREATE [OR REPLACE]FUNCTION 函数名(int8) AS ……

DECLARE

p_int_id aliasFOR $1;

BEGIN

END;

/

当没有输入参数时,postgres函数名后面也要有一个“()”

四、例外处理

·在oracle里,有丰富的例外事件,可以在程序中截获并进行相应的处理,同时还可以自定义例外事件。

·postgres里没有例外处理,一旦程序运行过程中,出现了错误,程序将直接中断退出,并打出错误的信息。之前已经完成的操作不提交。

五、空字符串

例: v_tmp2 :=v_tmp1||’0’;

·在oracle中,对字符串变量,不需要专门给它赋空值,这样与其它的字符串连接时不会有问题,如上例子,v_tmp1和v_tmp2在定义后都没有赋过值(或为null),经过该语句后,v_tmp1还是空串,v_tmp2的值是’0’。

·在postgres里,字符串如果要与别的字符串进行连接,则必须先赋值。如上例子,v_tmp1和v_tmp2在定义后都没有赋过值(或为null),经过该语句后,v_tmp1和v_tmp2都会是空串;而在该语句给v_tmp1赋值:

v_tmp1 :=‘’;

再执行例子的语句,v_tmp2的值是’0’。

六、substr函数

substr(org_string,begin_position[,sub_length])

·ORACLE里,begin_position可以是负数,表示的是从字符串的右边开始取值。

·postgres里,对负数处理没有说明,暂时找不到规律。如果需要从字符串的右边开始取值,需要先算出字符串的长度length,再用substr(org_string,length-sub_length[,sub_length])。

lykity 发表于:2004.12.21 13:17 ::分类:( 技术讨论 )::阅读:(4906次) :: 评论 (0)

转载于:https://www.cnblogs.com/leeeee/p/7276685.html

ORACLE与PostgreSql的区别相关推荐

  1. 从Oracle到PostgreSQL:动态性能视图 vs 标准统计视图

    从 Oracle 到 PostgreSQL :从 Uptime 到数据库实例运行时间 Oracle数据库的性能视图几乎可以说是最引以为骄傲的功能,在那样细粒度的采样统计强度下,依然保持卓越的性能,基于 ...

  2. MySQL 与 PostgreSQL的区别

    MySQL 与 PostgreSQL的区别 什么是 PostgreSQL数据库? PostgreSQL,也称为 Postgres,是一种开源关系数据库,因其可靠性.灵活性和对开放技术标准的支持而享有盛 ...

  3. oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件

    原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...

  4. vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)

    Oracle和PostgreSQL都提供了内置的编程语言(PL/SQL vs PL/pgSQL),在输入输出参数的声明上有较大的不同,如输入参数中存在inout/out参数,Oracle的函数可以有返 ...

  5. oracle迁移postsql的,osdba's blog : Oracle迁移PostgreSQL系列文章之二:merge语句

    Oracle迁移PostgreSQL系列文章之二:merge语句 Posted on 2015-03-06 11:12:46 by osdba 我们知道,Oracle中有一个特别的merge语句.而P ...

  6. Oracle RESETLOGS 和 NORESETLOGS 区别说明

    Oracle RESETLOGS 和 NORESETLOGS 区别说明 一.创建控制文件时:Resetlogs和Noresetlogs > > & >             ...

  7. Oracle与mongodb的区别

    oracle与mongodb的区别 1. 从概念上 Oracle中的许多概念与MongoDB中的类似.下表概述了Oracle和MongoDB中的常见概念. Oracle mongodb ACID Tr ...

  8. Oracle primary,unique,foreign 区别,Hibernate 关联映射

    Oracle primary,unique,foreign 区别 转:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html NOT N ...

  9. oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 介绍一个在线ER模型生成工具,该工具可以在线为多个数据库的DDL文件生成ER模型图,并支持MySQL,SQLServ ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续4)
  2. 以Linux系统上的gcc为例,解密C语言编译背后的全过程!
  3. AI战“疫”!人工智能在疫情中的重要作用
  4. python 优先队列_Python中heapq与优先队列【详细】
  5. iphone 虚拟机Mac系统中VMware tools安装和vm共享文件夹的设置
  6. 第26讲:模拟登录爬取实战案例
  7. 项目实战-药品采购系统-day01
  8. 互联网晚报 | 9月11日 星期六 | 魅蓝宣布正式回归;黑石集团终止收购SOHO中国;“小酒馆第一股”海伦司正式登陆港交所...
  9. 键盘出现与消失的监听方法
  10. byte[]和string
  11. 为什么Java会给system报错_java – 为什么将System.nanoTime()转换为Calendar对象会给我错误的当前日期?...
  12. RS-232、RS422和RS-485的区别和各自的实现方式
  13. Java中常见流的分类及简单讲解
  14. iPhone 11 128G 抱回家!
  15. android自动修音,唱吧自动修音app下载-唱吧自动修音 安卓版v8.6.0-PC6安卓网
  16. dubbo kryo序列化_Java后端精选技术:序列化框架的选型和比对
  17. PLC编程实现堆栈功能
  18. MSP430G2553学习笔记
  19. CPU,GPU,TPU,NPU都是什么?
  20. 国际物联网展会将于2021年在南京12月份举办

热门文章

  1. H3C的DHCP中继配置命令
  2. 推荐5款好用的安卓版RSS应用
  3. linux memcacheQ的安装与使用
  4. PHP验证码识别实例
  5. go 设置进程名_七天用Go写个docker(第六天)
  6. eplan安装提示没有安装许可语言_CAD和EPLAN!电气制图你会选择哪个?
  7. Huawei eNSP 安装教程
  8. 我如何开始使用Linux
  9. WOOTConf 2017:Lockpicking,Willie Nelson开发人员等等
  10. 自动化脚本上传图片怎么办_一切都自动化后我们将怎么办?