函数及存储过程支持
可获得性
本特性自openGauss 1.1.0版本开始引入。
特性简介
函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。
客户价值
- 允许客户模块化程序设计,对SQL语句集进行封装,调用方便。
- 存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。
- 系统管理员通过限制执行某一存储过程的权限,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
特性描述
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类型,但是实际访问能力缺失。
依赖关系
无。
意见反馈