44.1. 概述

44.1.1. 使用 pl/sql 的优势
44.1.2. 支持的参数和结果数据类型

pl/sql(兼容Oracle PL/SQL) 是一个可加载的过程化语言,用于 LightDB 数据库系统。它用于与 Oracle PL/SQL 应用程序兼容。 pl/sql 的设计目标是创建一个可加载的过程化语言,该语言具有以下特性:

使用 pl/sql(兼容Oracle PL/SQL) 创建的函数可以在任何内置函数可用的地方使用。例如,可以创建复杂的条件计算函数,然后将它们用于定义操作符或在索引表达式中使用。

LightDB 22.2 及更高版本中,默认安装了 pl/sql。但是,它仍然是一个可加载的模块,因此特别是注重安全的管理员可以选择删除它。

尽管大多数功能默认情况下都已启用,但某些功能(例如调用特定于 Oracle 的函数或 Oracle 内置包)也需要 LightDB 在 Oracle 模式下运行。

44.1.1. 使用 pl/sql 的优势

SQLLightDB 和大多数其他关系型数据库所使用的查询语言。它是可移植且易学习的。但是,每个 SQL 语句必须由数据库服务器单独执行。

这意味着您的客户端应用程序必须将每个查询发送到数据库服务器,等待其被处理,接收和处理结果,执行某些计算,然后发送进一步的查询到服务器。所有这些都会产生进程间通信,并且如果您的客户端位于与数据库服务器不同的计算机上,还会产生网络开销。

使用 pl/sql,您可以将一组计算和一系列查询 放在 数据库服务器内部,从而具备了过程化语言的功能以及 SQL 的易用性,但是可以大大节省客户端/服务器通信开销。

  • 兼容 OraclePL/SQL 存储过程语言

  • 客户端和服务器之间的额外往返被消除

  • 客户端不需要的中间结果不必在服务器和客户端之间进行编组或传输

  • 可以避免多次查询解析

与不使用存储函数的应用程序相比,这可以显著提高性能。

此外,使用 pl/sql,您可以使用 SQL 的所有数据类型、操作符和函数。

44.1.2. 支持的参数和结果数据类型

使用 pl/sql(兼容Oracle PL/SQL) 编写的函数可以接受服务器支持的任何标量或数组数据类型作为参数,并且它们可以返回任何这些类型的结果。它们还可以通过名称指定接受或返回任何复合类型(行类型)。还可以将 pl/sql 函数声明为接受 record,这意味着任何复合类型都将作为输入,或者声明为返回 record,这意味着结果是一个行类型,其列由调用查询中的规范确定。