1.概述
PL/SQL是一种程序语言,也叫做过程化SQL语言。
PL/SQL是数据库对SQL语句的扩展,在普通SQL语句的使用上增加了编程语言的特点,所以可以用来实现比较复杂的业务逻辑。
它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使得PL/SQL成为一个功能强大的事务处理语言。 PL/SQL的目的是联合数据库语言和过程语言。
2.PL/SQL块分类
匿名块:以Declare或begin开始,能够动态创建和执行过程代码的PL/SQL结构,每次需要编译执行,不存储在数据库中。
命名块:具有名称的pl/sql块,编译一次后,可多次执行,存储在数据块中。
存储过程:存储在数据库中的子过程,无返回值。
函数:存储在数据库中的子进程,有返回值
包:可容纳多个过程和函数的一个容器。
触发器:无需调用,满足需求的情况下,自动执行。
3.PL/SQL块的基本数据类型
ksql中的块结束符可通过\set SQLTERM命令设置
语法: \set SQLTERM sqltermchar
sqltermchar:任意一个符号,符号不符合规定时报错
单行注释:两个连接字符'_'开始,后面紧跟注释内容
多行注释:由/开头,以 /结尾
变量声明的语法:
name [CONSTANT] datatype [NOT NULL] [:=|DEFAULT default assignment];
name 声明变量或常量的名字 CONSTANT:声明的是一个常量,不加关键字则声明一个变量
datatype:变量的数据类型
Not NULL:变量赋值非空约束
default assignment:变量初始化,可以是表达式
a2 constant int :=10;
a3 char(20) not null default 'king'
参数模式分类:
IN 参数:输入参数,只能接收参数,不能修改
OUT参数:输出参数,用于输出值,会忽略传入的值,可修改并将参数值传递到当前存储过程以外的环境中
INOUT参数:兼容以上两种特性,能接受传入的实参值,在子程序内可修改,也可以输出。
标量类型
用户定义类型
PLSQL基本数据类型 -%type
- %type
使用列属性或变量名加上%TYPE用来标识字段类型
用来表示一个和已有表字段具有相同类型的类型
除继承字段类型外,不能继承字段的其他属性
- %rowtype
一个复合类型,叫做行变量
用来表示和一个现有的表或者视图的行类型相同的类型
一个%ROWTYPE类型变量,可存放SELECT检索结果集的一条记录
集合类型
关联数组具有唯一键值的集合类型
具有以下特性:
包含零或多个具有相同数据类型的元素 用户可按键值检索
键值可是整型等数值类型,也可以是字符串等非数值类型 键值连续且有序 只能用于PL/SQL环境
嵌套表
可变数组 更多信息,参见https://help.kingbase.com.cn/v8/index.html