PL/SQL介绍:
-
PL/SQL是ORACLE对标准数据库语言的扩展
-
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言
-
PL/SQL 是对 SQL 的扩展 支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构
-
可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑
-
与 Oracle 服务器和 Oracle 工具紧密集成,具备可移植性、灵活性和安全性
-
支持 SQL,在 PL/SQL 中可以使用:
数据操纵命令
事务控制命令
游标控制 SQL 函数和 SQL 运算符
-
支持面向对象编程 (OOP) 可移植性,可运行在任何操作系统和平台上的Oralce 数据库 更佳的性能,PL/SQL 经过编译执行
PL/SQL组成:
声明部分、可执行部分和异常处理部分
Oracle PL/SQL基本语法:
declare(可选,声明变量或光标)
begin(必需,从此处开始执⾏语句)
exception(异常)
end;(必需,从此处结束分号不能省略)
PL/SQL的两种赋值⽅式:
1. :=
2. into

PL/SQL 支持的流程控制结构:
条件控制
-
IF 语句
-
CASE 语句
循环控制
-
LOOP 循环
-
WHILE 循环
-
FOR 循环
顺序控制
-
GOTO 语句
-
NULL 语句
IF语句
根据条件执行一系列语句,有三种形式:IF-THEN、IF-THEN-ELSE 和 IF-THEN-ELSIF
例1:
-- 统计出emp的平均工资,如果>2000,显示公司财政状况良好,<2000,公司财政状况堪忧declareavgsal emp.sal%type;beginselect avg(sal) into avgsal from emp;dbms_output.put_line(avgsal);if avgsal>2000 then dbms_output.put_line('公司财政状况良好');elsif avgsal<2000thendbms_output.put_line('公司财政状况堪忧'); end if;
end;
例2:
-- 查询出7839这个员工的工资
--<2000:收入可怜
--<3000: 收入还行
--<4000:收入较高
-->4000:收入很高了declarehassal emp.sal%type;beginselect sal into hassal from emp where empno='7839';dbms_output.put_line(hassal);if hassal < 2000thendbms_output.put_line('收入可怜');elsif hassal <3000then dbms_output.put_line('收入还行');elsif hassal < 4000thendbms_output.put_line('收入较高');elsedbms_output.put_line('收入很高了');end if;end;
循环语句
1.loop循环
例:
--0~100累加法declarei int :=1;num1 int :=0;
beginloopexit when i>100;num1 :=num1+i;i := i+1;end loop;dbms_output.put_line(num1);
end;
2.while循环
例:
declare i int:=10;s int:=0;
beginDBMS_OUTPUT.PUT_LINE('循环开始:');while i<20loops:=s+i;DBMS_OUTPUT.PUT_LINE('进入循环:'||i);i:=i+1;end loop;DBMS_OUTPUT.PUT_LINE('循环结束:'||s);
end;
3.for循环
例:
declare s int:=0;
beginDBMS_OUTPUT.PUT_LINE('循环开始:');for i in 10..20 loops:=s+i;DBMS_OUTPUT.PUT_LINE('进入循环:'||i);end loop;DBMS_OUTPUT.PUT_LINE('循环结束:'||s);
end;--不需要事先定义循环变量i,自动进入循环,i为循环的边界值10,循环到20
--循环体中i不需要累加,自动(只能)累加1,不能手动赋值
目录
PL/SQL介绍:
PL/SQL组成:
Oracle PL/SQL基本语法:
PL/SQL的两种赋值⽅式:
PL/SQL 支持的流程控制结构:
条件控制
循环控制
顺序控制
IF语句
循环语句
1.loop循环
2.while循环
3.for循环
跳转控制
DECLAREsal int;
BEGINsal :=&sal; - - 接受用户输入if sal < 100 thengoto first;elsif sal < 200 thengoto second;elsegoto third;end if;<<FIRST>> --定义一个名称为FIRST的节DBMS_OUTPUT.PUT_LINE('FIRST:'||sal);RETURN;<<SECOND>>DBMS_OUTPUT.PUT_LINE('SECOND:'|| sal);RETURN;<<THIRD>>NULL;
END;