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])。
转载于:https://www.cnblogs.com/leeeee/p/7276685.html
ORACLE与PostgreSql的区别相关推荐
- 从Oracle到PostgreSQL:动态性能视图 vs 标准统计视图
从 Oracle 到 PostgreSQL :从 Uptime 到数据库实例运行时间 Oracle数据库的性能视图几乎可以说是最引以为骄傲的功能,在那样细粒度的采样统计强度下,依然保持卓越的性能,基于 ...
- MySQL 与 PostgreSQL的区别
MySQL 与 PostgreSQL的区别 什么是 PostgreSQL数据库? PostgreSQL,也称为 Postgres,是一种开源关系数据库,因其可靠性.灵活性和对开放技术标准的支持而享有盛 ...
- oracle 控制文件在哪里设置_从Oracle到PostgreSQL:最全控制文件
原文: 从Oracle到PostgreSQL:最全控制文件(上) https://www.enmotech.com/web/detail/1/770/1.html 从Oracle到PostgreSQL ...
- vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)
Oracle和PostgreSQL都提供了内置的编程语言(PL/SQL vs PL/pgSQL),在输入输出参数的声明上有较大的不同,如输入参数中存在inout/out参数,Oracle的函数可以有返 ...
- oracle迁移postsql的,osdba's blog : Oracle迁移PostgreSQL系列文章之二:merge语句
Oracle迁移PostgreSQL系列文章之二:merge语句 Posted on 2015-03-06 11:12:46 by osdba 我们知道,Oracle中有一个特别的merge语句.而P ...
- Oracle RESETLOGS 和 NORESETLOGS 区别说明
Oracle RESETLOGS 和 NORESETLOGS 区别说明 一.创建控制文件时:Resetlogs和Noresetlogs > > & > ...
- Oracle与mongodb的区别
oracle与mongodb的区别 1. 从概念上 Oracle中的许多概念与MongoDB中的类似.下表概述了Oracle和MongoDB中的常见概念. Oracle mongodb ACID Tr ...
- Oracle primary,unique,foreign 区别,Hibernate 关联映射
Oracle primary,unique,foreign 区别 转:http://www.cnblogs.com/henw/archive/2012/08/15/2639510.html NOT N ...
- oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...
在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 介绍一个在线ER模型生成工具,该工具可以在线为多个数据库的DDL文件生成ER模型图,并支持MySQL,SQLServ ...
最新文章
- 《评人工智能如何走向新阶段》后记(再续4)
- 以Linux系统上的gcc为例,解密C语言编译背后的全过程!
- AI战“疫”!人工智能在疫情中的重要作用
- python 优先队列_Python中heapq与优先队列【详细】
- iphone 虚拟机Mac系统中VMware tools安装和vm共享文件夹的设置
- 第26讲:模拟登录爬取实战案例
- 项目实战-药品采购系统-day01
- 互联网晚报 | 9月11日 星期六 | 魅蓝宣布正式回归;黑石集团终止收购SOHO中国;“小酒馆第一股”海伦司正式登陆港交所...
- 键盘出现与消失的监听方法
- byte[]和string
- 为什么Java会给system报错_java – 为什么将System.nanoTime()转换为Calendar对象会给我错误的当前日期?...
- RS-232、RS422和RS-485的区别和各自的实现方式
- Java中常见流的分类及简单讲解
- iPhone 11 128G 抱回家!
- android自动修音,唱吧自动修音app下载-唱吧自动修音 安卓版v8.6.0-PC6安卓网
- dubbo kryo序列化_Java后端精选技术:序列化框架的选型和比对
- PLC编程实现堆栈功能
- MSP430G2553学习笔记
- CPU,GPU,TPU,NPU都是什么?
- 国际物联网展会将于2021年在南京12月份举办