迁移 Oracle 到 PostgreSQL: DBMS_SQL 包
Oracle 的 DBMS_SQL
包提供了一个接口来解析和运行动态 SQL 语句、DML 命令和 DDL 命令(通常是在 PL/SQL 包、函数或过程里面)。DBMS_SQL
支持对 SQL 游标进行非常精细的控制,并在某些情况下可以提高游标性能。
Oracle 的 DBMS_SQL
包提供了一个接口来解析和运行动态 SQL 语句、DML 命令和 DDL 命令(通常是在 PL/SQL 包、函数或过程里面)。DBMS_SQL
支持对 SQL 游标进行非常精细的控制,并在某些情况下可以提高游标性能。
Oracle 的 DBMS_OUTPUT 包通常用于调试或显示来自 PL/SQL 过程的输出消息。
摘要:Oracle PL/SQL 和 PostgreSQL PL/pgSQL 都支持游标的功能。语法TYPE … IS REF CURSOR
不受 PostgreSQL 支持。语法上的细微差异可能需要重写一些代码。PostgreSQL 不支持%ISOPEN
、%BULK_EXCEPTIONS
和%BULK_ROWCOUNT
。
摘要:Oracle PL/SQL 是 SQL 的过程式扩展。PL/SQL 的程序结构将代码划分为由以下关键字区分的块:DECLARE
、BEGIN
、EXCEPTION
和END
。未命名的 PL/SQL 代码块(未作为过程、函数或包存储在数据库中的代码)称为匿名块。
与几乎所有关系数据库一样,Oracle 允许生成从两个或多个表合并或 JOIN 行以创建最终结果集的查询。虽然可以执行多种类型的连接,但最常见的是 INNER JOIN
和 OUTER JOIN
。
用户和模式是关系数据库的基本概念,但是在 Oracle 和 PostgreSQL 里面,用户和模式的使用存在一些差异。
Oracle 和 PostgreSQL 各自都有着丰富的内置数据类型可用。在从 Oracle 迁移到 PostgreSQL 时,需要合理地将 Oracle 的数据类型转换到 PostgreSQL 中匹配的类型。
通常,表达式不能包含不同数据类型的值。例如,表达式不能将 5 乘以 10,然后加以“JAMES”。但是,PostgreSQL 和 Oracle 都支持将值从一种数据类型隐式和显式转换为另一种数据类型。
在 Oracle 中创建 PL/SQL 函数时,可以指定参数 DETERMINISTIC,该参数表示只要函数的输入参数值一样,返回的结果会保持不变。
Oracle 的 PL/SQL 包是一组相关子程序,与其使用的游标和变量一起,作为一个单元存储在数据库中。打包的子程序可以由应用程序或用户显式调用。
Copyright (c) 2017 - 2025, Redrock Data Services, Inc. All rights reserved.