对于Oracle数据库PL/SQL块的操作(数据类型、语句格式、语句内容、条件控制和循环控制、异常)

本文介绍了Oracle数据库中PL/SQL块的基本操作,包括数据类型如标量、属性、自定义类型及二进制整型,语句格式的声明与异常处理,以及语句内容如DBMS_OUTPUT和SQL查询。还详细阐述了条件控制(if-elsif-else, case)和循环控制(loop, while, for, goto)的使用方法,并讲解了动态执行SQL语句及其在异常处理中的应用。" 126835063,13597918,Maven Surefire Plugin: 测试用例执行管理与实战,"['单元测试', '功能测试', 'Maven插件', 'Junit5', '自动化测试']
摘要由CSDN通过智能技术生成

1.数据类型

  1. 标量数据类型 :数字型,字符型, 日期型和布尔型
  2. 属性数据类型 :%type:复制某个字段的类型;
  3. %rowtype:复制表的全部类型;
  4. 自定义数据类型:type 变量名 record (可有多个数据类型);
  5. binary_integer:介于-231 和 231 之间的整数。

2.PL/SQL语句格式

declare  变量赋值声明

begin

正常语句块(可镶嵌begin 语句块 end;)

exception  when 异常名 then 异常处理(可忽略)

 when others then 不满足以上异常时的处理

end;

3.PL/SQL语句内容

  1. dbms_output.put_line( );  --输出语句
  2. select 字段值 into 变量,from 表名 where 条件;   --如果使用查询语句的值时,必须进行赋值
  3. 变量名 数据类型 :=初始值;  --声明变量
  4. 变量名 constant 数据类型 :=初始值; --声明常量
  5. 变量名 数据类型 default  --默认值
  6. var 变量名 数据类型 :=初始值;  --全局变量在当前操作窗口有效,一般用于测试,用 :变量名,调用全局变量;
  7. print 全局变量名;  --查看当前变量的值
  8. :=  --赋值;    ..  --范围取值,如:1..5,从1到5

注解:

  1. PL/SQL 支持:SQL 数据操纵命令、游标控制命令、事务控制命令(commit,rollback)、SQL 函数、运算符和伪列。
  2. 编译→执行→储存编译好的SQL块
  3. set serveroutput on :设置环境变量为打开状态,从而使pl/sql程序能够在SQL操作台中输出结果 。  

4.条件控制和循环控制

注:if嵌套if时,外层if条件满足时执行内层if,如果外层if不满足时,执行elsif或者else;

注:exit when 条件;  --当满足条件时,跳出循环

1.if 条件 then 语句块 elsif 条件 then 语句块 else 语句块 end if;

2.case 字段  when 条件 then 语句块  else 语句块  end case;

3.loop 循环体  end loop ;  --无限循环

4.while 条件 loop 循环体 end loop; --循环

5.for 变量名 in 循环次数 loop 循环体 end loop;

注:in 从1..10,in reverse 从10..1;

6.goto 标签名1; <<定义标签名1>> 语句;--跳转到标签1

注:可以跟 goto 标签2 <<标签2>> null;相结合使用

7.动态执行语句

变量2:=0;

for x in 游标名 loop

变量1:='select count(*) from'||x.字段;

execute immediate 变量1 into 变量2

End loop;

execute immediate:=’sql语句’ using 向sql语句传递参数。--动态执行语句

绑定变量:使用动态执行语句之后使用using后使用变量

注:动态执行语句主要针对DDL语句的,DDL的语句不能直接在sql语句块来使用,参数值的变量可以做成输入框。由变量拼接而成的sql语句,也要用动态语句。

  1. 异常

定义异常

序号

异常类型

异常命令

说明

1

预定义异常

no_data_found

用于数据空指针异常时使用

2

dup_val_no_index

用于向唯一索引列中输入了重复值时使用

3

invalid_number

用于处理字符串转换为数字时使用

4

too_many_rows

用于处理查询中返回多于 1 条记录

5

zero_divide

用于处理用 0 作为除数时的数据

6

cursor_already_open

用于处理打开一个已经打开的游标

7

invalid_cursor

用于处理进行非法游标操作时使用

8

自定义异常

declare中声明异常:异常名 exception; →begin语句块中引发:raise 异常名;→exception中捕捉处理异常:when 异常名 then 异常处理内容。

9

引发应用程序异常
(引发系统异常)

raise_application_error(异常码,异常内容信息)

用于自定义异常处理报错的框框

10

-20000至-20999

异常码

11

pragma exception_init(异常名,异常码)

在声明中进行异常码绑定

12

注:在程序中进行引发应用程序异常时,必须进行异常码的绑定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值