本文内容来自 YashanDB 官网,原文内容请见
https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%...
PL 引擎为用户提供了过程化语言编程的平台,基于 SQL 语言扩展过程化能力,包括条件分支、循环,并实现了自定义的过程、函数等,提供了强大的编程能力。
PL 的主要优势有:
- 提升性能,当应用处理逻辑靠近数据后,能极大减少客户端和服务端的交互次数,显著降低执行的响应时间。
- 提升开发效率,应用开发时,可以把数据处理的逻辑封装成高内聚低耦合的存储过程或函数接口,共享给多个模块使用。
- 易于调优,随着数据量的增长,数据库的性能问题会逐步浮现甚至突然爆发,如果数据访问处理相关的逻辑都在存储过程中实现,DBA 能较快识别问题并通过优化 PL 代码立即干预。
#过程体
过程体是过程化语言的最主要载体,当前支持的过程体类型包括:
- 匿名块
匿名块是数据库里的一种特殊的 PL 对象,不会被持久化,创建后立即运行。它没有对象名字,不能直接按对象名调用。
- 存储过程
存储过程是 PL 语言按过程进行组织的数据库对象形式,类似 Pascal(结构化编程语言)中的过程。
- 自定义函数
自定义函数是 PL 语言按函数进行组织的数据库对象形式,简称 UDF,类似 Pascal(结构化编程语言)中的函数。自定义函数包括 PL 语言的自定义函数、外置 JAVA 语言的自定义函数和外置 C 语言的自定义函数。
- 触发器
触发器(TRIGGER)是数据库里的一种 PL 对象。创建一个触发器即创建了一个可执行的过程体,但触发器过程体不可以被用户显式调用,只能由一个事件来启动运行,当某个事件发生时触发器会自动隐式运行。
- 自定义高级包
自定义高级包是数据库里的一种 PL 对象,简称 UDP。自定义高级包是一组相关的过程、函数、变量、游标和类型等的集合。
- 自定义类型
自定义类型(UDT,User Defined Type),相对于数据库内置的类型而言,是由用户定义的数据类型,用于将现实世界的实体建模为数据库中的对象。UDT 与面向对象的编程思想类似,UDT 包含一组属性和方法,用户可以基于数据库内置的基本类型和其他 UDT 类型创建新的 UDT。
- 定时任务
定时任务(JOB)是一个根据时间定时触发执行的后台任务。一个定时任务包含如下三个基本要素:JOB 唯一标识、JOB 需要执行的任务、JOB 执行时间及频率。基于这三个要素,提供一系列 PL 语言的过程实现对一个 JOB 的直接操作管理。
#编译与执行
PL 的使用包括编译和执行两个阶段:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3072086/
,如需转载,请注明出处,否则将追究法律责任。