关键字:
KingbaseES、PLSQL
1.什么是PL/SQL?
PL/SQL是一种程序语言,全称为过程化SQL语言(Procedural Language/SQL)。PL/SQL是数据库对SQL语句的扩展,在普通SQL语句的使用上增加了编程语言的特点,所以可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事物处理语言。PL/SQL的目的是联合数据库语言和过程语言。
2.PL/SQL语法基础
标识符
用于定义PL/SQL单元和程序项的名称。可定义常量、变量、异常、显示游标、游标变量、参数、子程序及包的名称。
1.标识符规则:
(1)标识符由字母、数字和下划线组成;
(2)标识符必须以大小写字母或下划线开始;
(3)不能使用保留字。
2.示例:
(1)符合规则的标识符:
Test_var1、_var2、v#error
(2)不符合规则的标识符:
1mysal$ary(不合法,以数字1开头)、End int(不合法,使用了保留字)
块结束符
1.ksql中快结束符可通过\set SQLTERM命令设置,
语法:
\set SQLTERM sqltermchar (其中,sqltermchar:任意一个符号,符号不符合规定时报错)。
2.示例:
示例1: 示例2:
\set SQLTERM / \set SQLTERM @
BEGIN BEGIN
NULL; NULL;
END; END;
/ @
注释符
1.单行注释:由两个连接字符‘-’开始,后面紧跟注释内容
示例:--This is a standard SQL comment
2.多行注释:由/开头,以/结尾 示例:
\set SQLTERM /
BEGIN
/*
Test the variable name
1.legal name
2.illegal name
*/
Statement;
END;
/
常量值
即实际的文本文字,常量值包括:整数、浮点数、字符串、位串等类型
示例:
整型常量值:20,8,-9
浮点型常量值:6.5,.32,3.14159,5E3,6E-3
字符串:‘hello’,‘world’
表达式
表达式由运算符和操作数组成,操作数可以是变量或常数,运算符包括:一元运算符,如负号(-),二元运算符,如除号(/),无三元运算符。
常见运算符有:
数值运算符:+、-、*、/、%
字符运算符:||
日期运算符:+、-、*、/
布尔运算符:AND、OR、NOT
- 示例:
DECLATE
a1 int :=10;
BEGIN
a1 :=-a1;
a1 :=a1/5;
END;
/
变量声明
- 变量声明的语法:
name[CONSTANT] datatype[NOT NULL] [:=|DEFAULT default assignment];
name:要声明的变量或常量的名字
CONSTANT:声明的是一个常量,不加关键字则声明一个变量
datatype:变量的数据类型
NOT NULL:变量赋值非空约束
default assignment:变量初始化,可以是表达式
- 示例:
\set SQLTERM /
DECLARE
a1 varchar(50);
a2 constant int :=10;
a3 char(20) not null default ‘king’;
BEGIN
a1 :=’database’;
RAISE NOTICE ‘%’,a3;
END;
/
参数
- 参数定义:参数是一种向程序单元输入和输出数据的机制,存储过程可以接收多个参数
- 参数模式分类:
IN参数:输入参数,只能接收参数,不能修改;
OUT参数:输出参数,用于输出值,会忽略传入的值,可修改并将参数值传递到当前存储过程以外的环境中;
INOUT参数:兼容以上两种特性,能接收传入的实参值,在子程序内可修改,也可传输。
- 示例:
CTEATE OR REPLACE PROCEDURE pr1(p1 int, p2 out int)AS
a1 int :=10;
BEGIN
a1 :=a1+p1;
p2 :=a1;
END;
/
DECLARE
v1 int;
BEGIN
pr1(10,v1);
RAISE NOTICE ‘%’,v1;
END;
/