PostgreSQL Oracle 兼容性之存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL Oracle 兼容性之存储过程相关的知识,希望对你有一定的参考价值。

参考技术A

 在oracle中,函数和存储过程是经常使用到的,并且有所区别;而postgresql中函数和存储过程都是相同定义的。

 1.定义:定义存储过程的关键字为procedure。
 2.创建存储过程

例:
(无参数)

(有参有返)

总结
 1.创建存储过程的关键字为procedure。
 2.传参列表中的参数可以用in,out,in out修饰,参数类型一定不能写大小。列表中可以有多个输入输出参数。
 3.存储过程中定义的参数列表不需要用declare声明,声明参数类型时需要写大小的一定要带上大小。
 4.as可以用is替换。
 5.调用带输出参数的过程必须要声明变量来接收输出参数值。
 6.执行存储过程有两种方式,一种是使用execute,另一种是用begin和end包住。

 1.定义:定义函数的关键字为function。
 2.创建函数

总结
 1.定义函数的关键字为function 。
 2.必须有返回值,且声明返回值类型时不需要加大小。
 3.函数中定义的参数列表不需要用declare声明,声明参数类型时需要写大小的一定要带上大小。
 4.as可以用is替换。
  5.执行存储过程有两种方式,一种是使用select,另一种是用begin和end包住。

不同点:
 1.存储过程定义关键字用procedure,函数定义用function。
 2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。
 3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。

 postgresql则将函数和存储过程合为一体,不再明确区分存储过程与函数。
 1.定义:定义函数(存储过程 )的关键字为function。
 2.创建

例:

 1.必须有有returns(注意是returns不是return)子句,无返回值时returns viod
 2.执行时,有返回值用select,无返回值时用perform
 3.必须指定语言LANGUAGE

PostgreSQL兼容性之oracle的rowid(APP)

目录

文档用途

详细信息

文档用途

  oracle中的rowid伪列,有很重要的应用场景,但是PostgreSQL中没有该伪列,本文档介绍PostgreSQL如何兼容实现oracle中的rowid功能。

详细信息

oracle中的rowid

什么是rowid?

 rowid是数据的详细物理地址,通过rowid,oracle可以快速的定位某行具体数据的位置。

创建测试表

     create table test(id number,name varchar2(10));

插入测试数据

     insert into test values(0,'orcl');

     insert into test valurs(1,'orcl');

     insert into test values(2,'orcl');

     insert into test values(3,'orcl');

查看表内容

     select rowid,id,name from test;

     ROWID                      ID NAME

     ------------------ ---------- ---------------

     AAAV5DAAOAAAACWAAA          0 orcl

     AAAV5DAAOAAAACWAAB          1 orcl

     AAAV5DAAOAAAACWAAC          3 orcl

     AAAV5DAAOAAAACWAAD          2 orcl

rowid的结构

更多详细信息请登录【瀚高技术支持平台】查看瀚高技术支持平台

以上是关于PostgreSQL Oracle 兼容性之存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle迁移postgres之-Ora2Pg

专访唐成:从小工到专家,PostgreSQL的修炼之道

PostgreSQL升级之pg_upgrade升级

TDSQL-A PostgreSQL 产品概述 功能

PostgreSQL 和 Oracle 对象关系存储是不是与 ORM 相同?

转帖从 Oracle 到 PostgreSQL ,某保险公司迁移实践 技术实践