目录
1 PL/SQL介绍
1.1 PL/SQL基础结构
1.2 PL/SQL 注释
1.3 PL/SQL常量和变量
1.4条件语句
1.5 循环语句
过完节由于疫情公司没有进行上班,在收拾房屋的过程中找到一本关于oracle基础的书籍,就想着看巩固下oracle基础,在此进行记录。
1 PL/SQL介绍
PL/SQL是在日常工作中,使用oracle数据库常用的一种编程语言,是oracle公司对标准SQL语言的过程化扩展,在SQL语句的基础上增加了编程语言的特点。主要是把数据操作和查询语句放在PL/SQL的代码块中,通过逻辑判断实现复杂的业务逻辑或者功能。
1.1 PL/SQL基础结构
在编程过程中,PL/SQL是由声明部分、程序代码、异常处理部分组成,主要是以块为基础单位。语法结构如下:
declare --声明一些变量、常量、数据类型等
begin
-- 主要程序体。主要是函数或者存储过程
exception -- 异常处理 当编写的代码块出现异常时,可以在此处编写处理异常代码
end;-- 主程序体结束。
注意:在PL/SQL块中每条语句都必须以分号进行结束,每一个块由declare或者begin开始,以end结束。
1.2 PL/SQL 注释
在PL/SQL程序块中有时候内容会比较长,这时候添加注释是一个好的编程习惯,这样可以提高程序的可读性。在PL/SQL程序块中注释分为单行注释和多行注释
单行注释:有连接字符-- 开始,注释范围为从连接字符开始,到行的末尾
多行注释:在编写程序块的过程中,有时候由于业务逻辑较为复杂,则需要的注释可能超过一行,这时候就要使用多行注释。有/* 开头 */结束
1.3 PL/SQL常量和变量
在编写PL/SQL程序块的过程中,经常使用到常量和变量,这时候必须要声明这些常量和变量,然后才能进行使用。
变量:在程序执行的过程中其值时可以变化的数据存储结构,定义变量需要定义变量名和数据类型,同时也可以为变量设置初始值
语法:变量名 数据类型(变量长度):=初始值 declare name varchar2(30):='是是是'
常量:在程序的执行过程中不可改变的数据存储结构
语法:常量名 constant 数据类型:=常量值 year constant varchar2(32):=''
命名规则
名称必须以字符开头,长度不超过30字符名称不能包含减号或者空格,不能使用PL/SQL编程关键字标识符不区分大小写,并且可以包含数字、下划线等
在定义常量和变量时,需要声明其为哪种数据类型,对数据类型进行简单介绍
1 字符类型:字符类型变量主要用来存储字符串或者字符数据,主要包括把人varchar2、char、long、nchar和nvarchar2等。
声明语法:varchar2(lenggth)
varchar2 最大可以存储32767个字节,char类型最大长度同为32767个字节,与varchar2不同的是长度可以不进行指定,默认为1。如果赋给char类型的值不足时,则后面用空格自动补全。数据库类型的varchar2最大长度为4000个字节,char2000字节,long长度最大可达到2G。
2 数值类型:主要用来存储整数或者实数,包含number、INTEGER、BINARY_FLOAT等
NUMBER(p[,s]):1-22字节。P(Precison)取值范围1到38,S(Scale)取值范围-84到127.可以存放数据范围为10^130~10^126(不包含此值).正值s为小数位数,负值s表示四舍五入到小数点左部多少位。
例:123.89 NUMBER(6,1) 123.9 NUMBER(6,-1) 120
INTEGER类型:INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
Oracle 数据库提供了专为浮点数的两种数值数据类型:
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。
在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。
3 布尔类型:主要用于控制程序流程,一个布尔类型的值可以是true、false、null。
4 %type类型或者%rowtype 类型
在PL/SQL编程过程中,为了保持某个变量的数据类型和表中某一个字段类型一致,可以定义%type。%type类型隐式的将变量的数据类型指定为表中对应列的数据类型
语法:variable_name table_name.column_name%type
如:
v_Namestudents.name%TYPE;
通过使用%TYPE,v_name变量将同students表的name列的类型相同(可以理解为将两者邦定起来)。
%rowtype :在编程语言过程中%type主要针对表中的某一列,%rowtype则针对表中的一行数据,使用%rowtype定义的变量可以存储表中的一行数据。
语法:variable_name table_name%rowtype
如:
v_RoomRecord rooms%ROWTYPE;
将定义一个记录,该记录中的字段将与rooms表中的列相对应。
5 记录类型
记录类型与表的行结构相似,记录类型定的的变量可以存储一个或者多个字段组成的一行数据,而不必将每一列都单独列出
语法:type record_name is record(filed_name data_type)
record_name 记录类型的名称
is record 表示创建的时记录类型
filed_name 记录类型的字段名
data_type 合法的数据类型
如
type new_type is record(empno number(4),rname varchar2(10)); -- 定义记录类型vemp new_type --使用该类型定义变量selectempno,ename into vemp from table_name -- 复制
1.4条件语句
在PL/SQL编程的过程中,需要进行逻辑判断,这时候就要使用条件语句进行判断。
if 条件语句
语法:if(条件表达式) then
(执行语句1)
elseif (条件表达式2) then
(执行语句2) .......
else
end if;
注意:elseif 与其他编程语言的else if 有区别
case 条件语句
语法: case(变量)
when (表达式1) then 值 1
when (表达式2) then 值 2
when (表达式n) then 值 n
else 值n+1
end;
搜索case 表达式
case
when condtion1 then result1;
when condtion2then result2;
when condtionNthen resultN;
else default result;
end case;
1.5 循环语句
循环是程序控制结构,可以进行遍历一系列PL/SQL语句,并可以在0次和无限次之间执行这些语句。循环语句一般由循环体和结束条件组成,循环体指重复执行的语句,结束条件则用于终止循环。
1 循环语句loop .......exit .......end
此语句重复执行循环体中的程序块,直到执行到exit退出循环
语法: loop
(程序块1)
if(条件表达式) then
exit
end if
(程序块2)
end loop;
如:
declarevar1 integer:=1var2 integer:=2beginloopvar2:=var1+var2if var2 = 50 thenexitend if;end loop;end;
2循环语句loop .......exit when.......end
此语句重复执行循环体中的程序块,直到执行到exit when 后面的判断语句退出循环
语法: loop
(程序块1)
exit when(表达式)
(程序块2)
end loop;
declarevar1 integer:=1var2 integer:=2beginloopvar2:=var1+var2exit when var2 = 50;var1:=var1+1end loop;end;
3 while 循环语句
循环语句while..... loop..... end loop 的功能是当while后面的条件语句成立时,重复执行循环体的程序块
while(条件表达式)
loop
(程序块)
end loop
参考:oracle 从入门到精通
下一篇 oracle游标/lilongwangyamin/article/details/104391059