pl/sql是一种编程语言,就像java一样java叫做高级编程语言
什么是编程,编程说到底就是对于数据的操作,数据包括数据库存储的和自己定义的变量常量等等数据,对他们进行逻辑化的处理
以实现特定的功能。
那么pl/sql和他一样 它叫做数据库过程语言。
既然是语言他就可以写很多东西,人们把用pl/sql写出来的代码按照功能进行划分,分为过程,函数,触发器。
pl/sql优点:
1.提高应用程序的运行性能
2.模块化的设计思想【分页的过程、订单的过程、转账的过程】
3.减少网络传输量
4.提高安全性
______________________________________________________________________________________________________________
使用pl/sql编程后相较于传统方式的对比:
1.如果不用pl/sql的编程理念的话,那么是在Java程序中写的sql然后通过连接池或者jdbc的连接方式连接到数据库
这个连接的过程和数据传输的过程中是需要话时间的(大部分时候java的机器和数据库的机器不是一台)
sql语句到了数据库那里之后需要进行编译,转化成数据库可识别的语言,编译的过程是需要话时间的
2.模块话的设计思想 需要牛逼的人来写存储过程,因为这个直接就在数据库上操刀,一定要稳准狠,新手干不了。
3.一个分页sql是有3个sql完成的,原始的话不用pl\sql编程的话他是需要传送三个sql,用了存储过程(这个名词翻译的很好存储的意思指把原有的动态的sql就像咱们之前直接在数据库中操作的那样,用完了就扔掉了,下次再用的话就在传输+编译+执行一次,存储的意思就是把实现该逻辑的sql直接写到数据库中,先给他编译完了(预编译)每次执行的时候调用这个编译完的文件就可以了,过程指的是完成这个逻辑的语言的执行过程,把这个过程记录下叫做存储过程)
4.直接传sql的话很多表名,字段,查询条件很容易暴露出来,有时直接在sql中写用户名密码,这样很危险,而存储过程呢,是一个函数名字+入参+出参,加之数据库由其自身的保护机制。
缺点:
移植性不好,项目的进行的过程中Oracle换成DB2,全部的pl/sql写的东西都要重写。
--编写一个存储过程,向某表中添加一条记录
create table mytest(name varchar2(30),passwd varchar2(30));
--先传固定值的存储过程
create or replace procedure sp_pro1 is
begin
--执行部分
insert into mytest('lingyejun','123');
end;
/
exec sp_pro1;
call sp_pro1;
create or replace procedure sp_pro2 is
begin
delete from mytest where name='lingye';
end;
/