函数及存储过程支持

可获得性

本特性自openGauss 1.1.0版本开始引入。

特性简介

函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。

客户价值

  1. 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。
  2. 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。
  3. 系统管理员通过限制执行某一存储过程的权限,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

特性描述

openGauss支持SQL标准中的函数及存储过程,其中存储过程兼容了部分主流数据库存储过程的语法,增强了存储过程的易用性。

特性增强

支持PL/PGSQL单步调试功能。

支持PL/PGSQL存储过程覆盖率收集。

支持PL/SQL中通过ROWTYPE获取表、视图、游标中一行记录的类型。

支持PL/SQL忽略依赖进行创建和重编译的功能。

支持PL/SQL使用嵌套数组。

支持PL/SQL使用游标参数默认值。

支持PL/PGSQL中使用游标表达式。

支持管道函数。

支持在包package、匿名块、存储过程、函数中使用record类型创建一个游标的type类型。

支持游标作为插入值。

特性约束

不支持嵌套数组的数组类型成员直接调用集合函数。

不支持直接使用数组对嵌套数组的数组类型成员进行赋值。

不支持通过ROWTYPE获得嵌套游标的类型。

管道函数必须是独立函数或包函数。

管道函数不能为嵌套函数或SQL宏指定PIPLINED。

管道函数返回的类型必须是schema级别或者package内定义的集合类型。目前支持Array和TableOf类型。

管道函数返回类型必须与表类型显式一致。

当管道函数存在大批量数据需要处理时,执行性能可能会变差,可以通过提升work_mem缓解性能问题。

管道函数对TableOf实现为数组形式,如果管道函数作为targetlist,返回结果虽然是TableOf类型,但是实际访问能力缺失。

依赖关系

无。

意见反馈
编组 3备份
    openGauss 2025-03-19 23:53:59
    取消