美文网首页数据库
ora2pg pl/sql转换为pl/pgsql测试

ora2pg pl/sql转换为pl/pgsql测试

作者: 消想 | 来源:发表于2018-09-29 11:39 被阅读0次

以oracle 11g pl/sql语法为例,目标postgresql版本10.5

pl/sql语法转换

1. 变量定义及赋值
—— 是否支持
普通类型:NUMBER,VARCHAR2,BOOLEAN,%ROWTYPE 支持
table types:TYPE IS TABLE OF 不支持,定义时报语法错误
数组类型 TYPE IS VARRAY 不支持,定义时报语法错误

2.LOOP语句

—— 是否支持
LOOP ... END LOOP 支持
带 CONTINUE, EXIST关键字 支持
LOOP嵌套LOOP 支持
多个LOOP语句 不支持,只转换了第一个LOOP

3.CASE语句

—— 是否支持
CASE...END CASE 支持
多个CASE语句 支持

4.CURSOR

—— 是否支持
CURSOR 带参数、不带参数 支持
FOR IN CURSOR 支持
CURSOR 关键字%NOTFOUND %NOTFOUND嵌套在FOR IN LOOP语句中时未转换成 NOT FOUND,导致执行出错
多个CURSOR 支持,但是上个cursor OPEN之后需要CLOSE,否则执行的时候到下一个cursor会报错

5.EXCEPTION

—— 是否支持
RAISE EXCEPTION 支持
声明EXCEPTION_INIT 不支持
oracle自带异常INVALID_NUMBER 不支持,未转换

6.EXECUTE IMMEDIATE

—— 是否支持
EXECUTE IMMEDIATE 支持,转换为EXECUTE,但是EXECUTE的语句未转换
EXECUTE IMMEDIATE.. USING [IN OUT]... 不支持

7.EXPRESSION

—— 是否支持
+,-,*,/,(),=,<>,!=,<,>,<=,>=,LIKE,BETWEEN,IN 支持
**(取幂运算符) 不支持
~=关系运算符(not equal) 不支持
^=关系运算符(not equal) 不支持

8.FORALL语句

—— 是否支持
FORALL 不支持,pl/pgsql不支持该语法

9.GOTO语句

—— 是否支持
GOTO 不支持,pl/pgsql不支持该语法

10.IF THEN语句

—— 是否支持
IF..ELSIF..ELSE..END IF 支持
嵌套IF 支持

11.RETURN

—— 是否支持
RETURN... 支持
RETURN... INTO... 支持

12.WHILE LOOP语句

—— 是否支持
WHILE..LOOP..END LOOP 支持
多个WHILE LOOP 支持

附部分转换前后语句对比图:


变量定义及赋值-1.png
变量定义及赋值-2.png
LOOP-1.png
LOOP-2.png
LOOP-3.png
CASE-1.png
CASE-2.png
CURSOR-1.png
CURSOR-2.png
CURSOR-3.png
EXCEPTION-1.png
EXCEPTION-2.png
EXCEPTION-3.png

相关文章

  • ora2pg pl/sql转换为pl/pgsql测试

    以oracle 11g pl/sql语法为例,目标postgresql版本10.5 pl/sql语法转换 1. 变...

  • PostgreSql 的PL/pgSQL 块结构

    PostgreSql 的PL/pgSQL 块结构 本文我们学习PL/pgSQL结构块,包括如何写结构块和执行结构块...

  • PL/SQL

    1.什么是PL/SQL PL/SQL(Procedure Language/SQL)PL/SQL是Oracle对s...

  • PL/pgSQL从入门到放弃(3)-函数

    本文由 @小刘先森 原创,转载请注明出处。 PL/pgSQL系列文章,方便小伙伴们学习。 PL/pgSQL从入门到...

  • JAVA学习笔记(PL/SQL)

    1.1什么是PL/SQL PL/SQL(ProceduralLanguage/SQL)是Oracle在标准SQL的...

  • oracle工具PL/SQL快速入门1简介

    什么是PL/SQL? PL/SQL是Oracle中使用的结构化查询语言(SQL)的扩展。 与SQL不同,PL/SQ...

  • 子程序的开发:包

    包用于 组合 PL/SQL类型、PL/SQL项、PL/SQL子程序,由 包规范、包体 组成. 一、建立包 建立包时...

  • PL/SQL基础

    1.PL/SQL pl/sql (procedural language/sql) 是 Oracle 在标准的 s...

  • PL/SQL基本操作记录

    1、PL/SQL Developer记住登陆密码在使用PL/SQL Developer时,为了工作方便希望PL/S...

  • pl/sql

    PL/SQL 特点: PL/SQL是过程语言。 PL/SQL中存在过程构造和数据库访问。 在Oracle服务器和客...

网友评论

    本文标题:ora2pg pl/sql转换为pl/pgsql测试

    本文链接:https://www.haomeiwen.com/subject/ffweoftx.html