Oracle学习笔记 -- day07 PL/SQL基本语法之变量、常量、游标、异常
来源:互联网 发布:安卓微信数据恢复 编辑:程序博客网 时间:2024/05/22 08:14
一、PL/SQL语言的语法
1、基本语法结构
[declare] --声明 --可以在此声明 变量 常量 游标 异常begin --逻辑处理语句[exception] --异常处理语句 try catchend;
2、变量和常量
:= 在PL/SQL中就是赋值的意思
%type 引用型变量,v_sal emp.sal%type; 意思是引用emp表中sal字段的数据类型给v_sal 这个变量
= 在PL/SQL中就相当于java中的 ==,是用来进行判断的
dbms_output.put_line(要打印的变量); 打印数据
%rowtype; 记录型变量,v_row emp%rowtype; 即将emp中的某一条数据,放入变量v_row中,此时变量可以使用.字段名,来进行查询数据
constant 常量 相当于Java final
-------声明变量和常量declare --java private int age=1;v_age number(3):=1; --:=就是赋值 =相当于Java中的==v_name varchar2(30):='sminth';v_sal emp.sal%type:=100; --引用型变量v_row emp%rowtype; --记录型变量v_sex constant number(1):=1; --constant常量 相当于Java finalbegin --v_sex:=0; --常量在此赋值会报错 v_age:=100; select ename,sal into v_name,v_sal from emp where empno=7788; select * into v_row from emp where empno=7788; dbms_output.put_line(v_row.ename||v_row.sal||v_row.job);end;
3、if 分支
(1)、第一种语法
if 条件 then
逻辑处理语句
end if;
(2)、第二种语法
if 条件 then
逻辑处理语句
else
逻辑处理语句
end if;
(3)、第三种语法
if 条件 then
逻辑处理语句
elsif 条件 then
逻辑处理语句
elsif 条件 then
逻辑处理语句
...........
else
逻辑处理语句
end if;
(4)、示例:输入一个年龄数据,如果小于18,打印“未成年人”,18到60 成年人,60以上 老年人
declarev_age number(4):=&sjdj;begin if v_age<18 then dbms_output.put_line('未成年人');elsif v_age>=18 and v_age<=60 then dbms_output.put_line('成年人');else dbms_output.put_line('老年人');end if; end;
二、循环
1、无条件循环(常用)
语法:
loop
循环的内容
end loop;
示例:打印1到100个数
declare v_num number:=1;begin loop --if v_num>100 then -- exit; --end if; exit when v_num>100; dbms_output.put_line(v_num); v_num:=v_num+1; end loop;end;
2、有条件循环
语法:
while 条件
loop
循环的内容
end loop;
示例:
declare v_num number:=1;begin while v_num<=200 loop dbms_output.put_line(v_num); v_num:=v_num+1; end loop;end;
3、for循环
语法:
for 变量名 in 起始值 .. 终止值
loop
循环的内容
end loop;
示例:
begin for v_num in 1..100 loop dbms_output.put_line(v_num); end loop;end;
三、游标
1、什么是游标
游标是用来接受多个对象的
2、游标的定义语法
cursor 游标名称 is sql查询语句;
3、游标的使用语法
open 游标名称 ;
loop
fetch 游标名称 into 记录型变量 ; -- 使用关键字fetch将游标中的一条数据取出,使用into关键字将数据放入一个变量中
exit when 游标名称%notfound; -- 当游标中没有数据的时候,退出循环
end loop;
close 游标名称;
4、示例:打印所有员工的信息
declare cursor c_emp is select * from emp; v_row emp%rowtype;begin open c_emp; loop fetch c_emp into v_row; exit when c_emp%notfound; dbms_output.put_line(v_row.ename||'---'||v_row.job); end loop; close c_emp; end;
5、示例:打印指定部门的员工的信息
declare cursor c_emp(v_no number) is select * from emp where deptno=v_no; v_row emp%rowtype;begin open c_emp(10); loop fetch c_emp into v_row; exit when c_emp%notfound; dbms_output.put_line(v_row.ename||'---'||v_row.job); end loop; close c_emp; end;
四、异常
1、异常的作用
增强代码的容错性和健壮性
2、预定义异常
(1)、系统定义的异常
(2)、代码示例
declare v_num number(6):=9; v_name varchar2(1);begin --v_num:=1/0; -- ZERO_DIVIDE v_name:='simth'; --VALUE_ERROR exception when ZERO_DIVIDE then -- 使用 when 捕获异常,使用 then 对异常进行处理,ZERO_DIVIDE是发生的异常类型 v_num:=0; dbms_output.put_line(v_num); -- when VALUE_ERROR then when others then -- others相当于java中的Exception,即others代表了所有异常 v_name:='s'; dbms_output.put_line(v_name); end;
3、自定义异常
--输入一个年龄,如果年龄超过150,抛异常“年龄太大,请检查数据”declarev_age number:=&age;exc_age exception; --异常的声明方式,exc_age为异常名称begin if v_age >150 then raise exc_age; -- 抛出异常使用raise关键词,相当于java中的throw end if; -- 以下 exception when exc_age then -- dbms_output.put_line('年龄太大,请检查数据');' --错误窗口的弹出 oracle中 -20001至-29999 可以使用 raise_application_error(-20001,'年龄太大,请检查数据');end;
- Oracle学习笔记 -- day07 PL/SQL基本语法之变量、常量、游标、异常
- go基本语法学习笔记之变量与常量
- Oracle 学习笔记 15 -- PL/SQL基本语法、流程控制
- ORACLE PL/SQL游标(cursor)学习笔记
- Oracle 学习笔记 16 -- 游标(PL/SQL)
- Oracle PL/SQL学习 之 游标
- PL/SQL语法之游标
- Oracle学习笔记 -- day09 PL/SQL语法之触发器
- PL/SQL developer基础语法学习(三)之游标
- oracle(03): PL/SQL基本结构,语法,变量
- PL/SQL学习笔记-常量变量及数据类型初步
- PL/SQL基本语法(ORACLE)
- Oracle:PL/SQL基本语法
- oracle-PL/SQL基本语法
- Oracle pl/sql编程 15---游标变量
- ORACLE学习之PL/SQL中异常
- pl SQL 学习笔记(五)oracle 游标
- 尚学堂马士兵Oracle学习笔记之六:PL/SQL中的游标,存储过程,触发器
- 前端,前端轮播的做法
- 手把手教你不使用任何工具将腾讯视频qlv格式转换为MP4格式的方法
- 【hpuoj 1400 神奇的操作 】
- HTML之JavaScript自学笔记(3)
- 计算机二级C选择题精华
- Oracle学习笔记 -- day07 PL/SQL基本语法之变量、常量、游标、异常
- 关于MERGE JOIN CARTESIAN
- 圆圈中最后剩下的一个数
- 用于(海康、大华等)录像机的WPF视频播放控件
- git config命令详解
- Git & Github使用指南
- python opencv入门 分水岭算法(29)
- 逆元模板
- Java基础(九)异常处理和断言