2024年最全Oracle-PL SQL编程_oracle 分块sql(4)

本文详细介绍了PL/SQL编程中的基本概念,包括变量和常量的定义,条件语句(if,case,while,for),以及异常处理的流程。通过实例展示了如何在PL/SQL中使用这些结构来处理数据和错误情况。
摘要由CSDN通过智能技术生成

1:直接赋值

name:='张三';
age:=age+10;

2:交互赋值

name:=&temp;

运行此代码会提示输入temp的值,然后把输入的值赋给name变量

3:使用select查询语句中的into子句

select name into name_temp from student where id = 1;

3、变量的作用域

变量的作用域,在一般的PL/SQL快中,变量的作用域从声明开始,一直到块的结束。如果存在块嵌套,则外部声明的为全局变量,可以在外部使用也可以在内部使用。

四、常量的定义

1、常量

常量的值在程序运行过程中保持不变,常量的声明方式与变量类似,但要包括关键字constant,常量定义的同时要赋予初值,如下所示。

pi constant number:=3.1415;

五、条件语句

if
case

1、if语句

有三种形式:if…then语句、if…then…else语句和if…then…elsif语句。

1、if…then语句

基本语法格式如下

if 条件表达式 then
语句序列;
end if;

当条件表达式结果是true时,程序运行then下面的语句序列,如果为false时,则跳过then下面的内容而去运行end if后面的语句。

2、if…then…else语句

基本语法格式如下

if 条件表达式 then
语句序列1;
else
语句序列2;
end if;

当条件表达式结果是true时,程序运行语句序列1,如果为false时,运行语句序列2。

3、if…then…elseif语句

基本语法格式如下

if 条件表达式 1 then
语句序列1;
elseif 条件表达式2
语句序列2;
...
else
条件表达式n
end if;

当条件表达式结果是true时,程序运行语句序列1,如果为false时,运行语句序列2。

2、case语句

语法如下

case 选择器表达式
	when 条件 1 then 语句序列 1;
	when 条件 2 then 语句序列 2;
	...
	when 条件 n then 语句序列 n;
	else 语句序列 n+1;
	end case;

六、循环语句

loop
while
for

1、loop循环

这种循环将循环条件包含在循环体内,loop循环会先执行一次循环体,然后判断是否满足设定的条件来决定循环是否继续执行。语法格式如下

loop
语句序列;
exit when 条件表达式
end loop

首先执行语句序列,然后根据条件表达式的值来判断下一步的操作,如果条件表达式的值为true,则退出循环体,如果条件表达式的值为false,则继续执行循环体。

2、while循环

while循环是先判断条件,如果条件成立就执行循环体,如果不成立,就退出循环,语法格式如下。

while 条件表达式 loop
语句序列;
end loop;

运行的时候,首先判断条件表达式,如果结果是true,则运行循环体内的语句序列,如果为false,则退出循环。

3、for循环

前面两种循环都要根据条件是否成立来决定循环次数,for循环可以自己定义循环次数。语法格式如下

for 循环变量 in [reverse] 开始数值...结束数值 loop
语句序列;
end loop;

当循环变量大于开始数值,小于结束数值的时候,执行语句序列,否则退出循环,默认情况下循环变量时循环递增的,如果使用了reverse参数,则循环递减。

七、异常处理

一个完整的PL/SQL语句块一般有3个部分组成,其中第3个部分就是异常处理部分,oracle提供了异常情况(exception)和异常处理(exception handler)来实现错误处理。一个错误对应一个异常,当出现错误的时候,异常处理器会捕获对应的异常,由异常处理器来处理运行时的错误。

1、异常的种类

oracle运行时错误可以分为oracle错误和用户自定义错误,与此对应,根据异常产生的机制和原理,可将Oracle的系统异常分为3种。
1:预定义异常:对应于oracle错误,是Oracle系统自身提供的,用户可以在PL/SQL异常处理部分使用名称对它们进行表示。对这些异常情况的处理,用户无须在程序中定义,是由oracle自动触发。
2:非预定义异常:即其他标准的oracle错误,对这种异常情况的处理,需要用户在程序中定义,然后由oracle自动将其引发。
3:用户定义异常:程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理需要用户在程序中定义,然后显示的在程序中将其引发。

2、异常处理过程

1、异常定义
异常变量 excption

如果是非预定义的异常,还需要为错误编号关联这个异常变量,语法如下

prama excption\_int(异常变量,-#####)

其中,“#####” 为oracle的错误编号

2、异常关联

在执行部分当错误发生的时候关联与错误对应的异常,由于系统可以自动识别oracle内部错误,所以当错误发生时系统会自动关联与之对应的预定义异常或非预定义异常,但是用户定义的错误,系统无法自动识别,需要用户编程用于关联,关联的语法如下。

raise user_define_recption

3、异常捕获与处理

当错误产生的时候,在异常处理部分通过异常处理器捕获异常并进行异常处理。语法如下。

exception
when 异常 1 [OR异常......]then 处理序列语句 1;
when 异常 2 [OR异常......]then 处理序列语句 2;
...
when 异常 n [OR异常......]then 处理序列语句 n;
end;

一个异常只能被一个异常处理器捕获,并进行处理
一个处理器可以捕获多个异常,此时通过OR连接

3、异常处理实例

查询student表中name为“张三”的学生信息,如果不存在这个同学,则输出“没有数据记录返回”,如果存在多个记录,则输出“返回数据记录超过一行”。

declare
	var_name student.name%type;
begin
	select name into var_name from student where name = '张三';
	if sql%found then 		--如果是一行,就显示结果
		dbms_output.put_line<'学生姓名:' || var_name>;
	end if;
exception
	when too_many_rows then	--捕获异常
		dbms_output.put_line<'返回数据记录超过一行'>;
	when no_data_found then
		dbms_output.put_line<'没有数据记录返回'>;
	end;

八、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

[外链图片转存中…(img-1ZindqeO-1714669955830)]
[外链图片转存中…(img-XKC8jAe3-1714669955831)]
[外链图片转存中…(img-MUMJ9VF0-1714669955831)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值