pl\sql编程基础
pl\sql的特点:
1、模块化程序开发
2、采用过程性语言精致程序的结构
3、pl\sql可以对程序中的错误进行异常处理
4、pl\sql程序减少了网络的交互,提高程序性能
5、pl\sql程序块具有更好的可移植性
pl\sql程序块结构
beclare
--变量、常量、游标、用户定义异常的声明
---可选
....
begin
--SQL语句和PL\SQL语句构成的执行程序
....
exception
---可选
---程序出现异常时,捕捉异常并处理异常
...
end;
select ....into...from.... ----查询到某张表的东西,插入的那张表中去
注意:变量的声明,它的有效作用域仅仅限于当前程序块,出了当前程序块就无效了。
分号注意事项:所有sql语句和end后加分号,其他都不加。
变量命名规则:
1、首字母必须是英文。
2、长度不超过30个字符。
3、不能包含空格。
4、毕业能使用关键字。
变量的作用域:从变量声明的开始,一直到结束。
变量声明和赋值
语法:
1、变量名 数据类型 := 赋值;
2、变量名 表名.列名%TYPE;
以某张表的完整行来声明变量:
变量名 表名%ROWTYPE;
PL\SQL基本规范:
1、全部保留字、oracle的内置函数、程序包以及用户定义的数据类型都要用大写。
2、每行只写一天语句,逗号后面以及运算符的前后都要加上空格。
3.变量名称都要使用有意义的名称命名。
4、命名应使用“_”的连接方式,而不是用大小写混合的方式。
5、变量前做好加上前缀,以表示该变量的数据类型、作用范围等。。
:=
----赋值
:=&字段;--------弹出输入框并用字段接收
dbms_output.put_line('');----输出语句
if控制
if 条件 then
--代码块;
end if;
--------------------
if 条件 then
--代码块1
else
--代码块2
end if;
-------------------------
if 条件 then
--代码块1
elsif
--代码块2
else
end if;
case控制(判断状态)
case 值
-- 常用在等值判断下
when 表达式1 then
代码1;
when 表达式2 then
代码2;
....
else
代码3;
end case;
==================
case
-- 也可用在不等值的情况下
when 表达式1=值 then
代码1;
when 表达式2=值 then
代码2;
....
else
代码3;
end case;
-------------------------
循环控制
loop循环
loop
代码块
....
exit [when conditon];
end loop;
可读性差、必须用exit退出循环
-----------------------------------
for循环语句
for 循环变量 in 循环开始....循环结束 loop
-----需要循环执行的代码块
end loop;
只要适用于知道具体循环次数的情况
-----------------------------------
while循环
while 循环条件 loop
---需要循环执行的代码块
end loop;
适用于不知道具体循环次数的情况
异常处理:---------------------------------
语法:
exception
when 异常1 then
处理异常1;
when 异常2 then
处理异常2;
when others then
其他异常处理;
end;
常见异常:
no_dara_found :当使用没有返回数据的select..into语
句给变量赋值时,就会跑出次异常。
too_many_rows:在使用select...into给变量赋值时,如
果但会的数据量多于一行,就会抛出此异常。
bup_val_on_index:在插入数据时违反了唯一索引而抛出
的异常
incalid_number:将非数字字符隐式转换为数值时引起的
异常
cursor_already_open:在已经打开的右表上执行open语句时抛出的异常。
time_on_resouce:oracle在等待资源时出现超时
casr_no_found:在case 没有when被选择,并且没有else语句
loggin_denied:无效的用户名或者密码
access_into_null:没有给初始化的对象赋值
------others:所有异常
自定义异常处理==========----
declare
异常变量名 excrption;
begin
raise 异常变量名;--触发异常
exception
when 异常变量名 then
异常处理;
rollback;
when others then
其他异常处理;
rollback;
end;
一般使用常量来定义异常
语法:
变量名 constant 变量的数据类型:=初始值;
----------------------------------------------
事务
事务的特性:
1、原子性:把操作当做一个原子工作单位,所有的操作,要么全执行,要么全不执行。
2、一致性:保证数据的一致性(例:转账的功能)
3、隔离性:当一个占用当前操作时,其他操作不允许执行,保证事务的独立性。
4、持久性:对数据的影响是持久的
commit ---提交事务
rollback --事务回滚
--------------------游标cursor----------------
游标:select语句查询出来的数据,获取数据中某一个位置上的数据的工具。
游标都声明在declare部分;
declare
cursor 游标变量 is
select * from 表名;
begin
end;