第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > oracle PL/SQL编程基础

oracle PL/SQL编程基础

时间:2021-05-30 05:57:38

相关推荐

oracle PL/SQL编程基础

目录

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。