和我一起恶补pl/sql(第一讲)
读完我的这个恶补,你可以对pl/sql的特性有了基本的认识。话不多说,开始。
在pl/sql中,可以使用sql语句来操作oracle操作,并且使用流程控制语句来处理数据。我们还可以声明常量和变量,定义函数和过程并捕获运行时的错误。
pl/sql是一种把sql对数据操作的优势和过程化语言数据处理优势结合起来的语言。
例子1:
declare qty number(5);--定义变量qty
begin --语句块的开始
select quantity into qty from invertyory --从invertyory表中选择quantity字段 并且赋值给qty变量
where product = 'TENNIE RACKET' for update of quantity;--条件是product等于'TENNIE RACKET' 为了对quantity的更新
if qty>0 then --if语句的判断qty>0就执行
update inventy set quantity = quantity -1--更新inventy表的quantity这个字段
where product ='TENNIE RACKET';--更新的条件是product ='TENNIE RACKET'
insert into pur_record values('TENNIE RACKET purchased',SYSDATE);--向pur_record中插入一条成功的记录
else--if语句为false的执行部分
insert into pur_record values('out of TENNIE RACKET',SYSDATE);--向pur_record中插入一调相应的记录
end if;--if语句的结束标记
commit;--提交数据库,之前都是在内存的操作,并没有在数据库中真实的反应
end;--结束
知识点1、 块结构:它的基本组成单元是一些逻辑块,这些块又能嵌套任意数量的子块,块组成包括:声明、处理、异常控制。在其中处理是必须的。
知识点2、变量、常量
变量:
声明: part number(4);
instack boolean;
赋值:方法一用“:=”, tax :=price*tax; vaild :=false;
方法二:利用数据库的查询结果为变量赋值:select quantity into qty from invertyory
where product = 'TENNIE RACKET' for update of quantity;
方法三:把变量作为一个out和in out模式的参数传递给子程序,然后由子程序为其赋值:
declare my real(7,2);
procedure adjust_salary(emp int,salary in out real)is .....
begin
select avg(sal) into my from emp;
adjust_salary(7788,my);
常量:要加constant关键字,red constant real:=5000.00;
下一讲是关于游标的,陆续更近。。。。。