为什么使用plsql编写存储过程会提高程序的性能

为什么使用plsql编写存储过程会提高程序的性能,第1张

能,存储过程是在服务器端运行的。

1、执行速度比普通的SQL语句

再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。

由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。

2、便于集中控制

当企业规则变化时,只需要在数据库的服务器中修改相应的存储过程,而不需要逐个的在应用程序中修改,应用程序保持不变即可,这样就省去了修改应用程序工作量。

3、可以降低网络的通信量

4、保证数据库的安全性和完整性

通过存储过程不仅可以使没有权限的用户在控制之下间接地存取数据库,保证数据的安全;而且可以使相关的动作在一起发生,从而可以维护数据库的完整性。

5、灵活性

存储过程可以用流控制语句编写,具有很强的灵活性,可以完成复杂的判断和运算,可以根据条件执行不通SQL语句。

1 假设更新emp表

create procedure my_pro is

begin

update emp set sal=

(case

when job='PRESIDENT' then sal+1000

when job='MANAGER' then sal+500

else sal+200

end)

commit

end

/

2 create table emp_bak1 as select * from emp where 1=2

create table emp_bak2 as select * from emp where 1=2

insert into emp_bak1 select * from emp where sal>(select avg(sal) from emp)

insert into emp_bak2 select * from emp where sal<(select avg(sal) from emp)

一定要用游标的话

declare

avgsal number

cursor emp_cur is select avg(sal) a from emp

begin

open emp_cur

fetch emp_cur into avgsal

insert into emp_bak1 select * from emp where sal>avgsal

insert into emp_bak2 select * from emp where sal<avgsal

commit

close emp_cur

end

/

直接sql语句:

select  wm_concat(decode(e.empno,7369,d.dname,null)),wm_concat(decode(e.empno,7369,e.ename,null)) from emp e, dept d

 where e.empno in ((select e1.mgr from emp e1 where e1.empno = 7369), 7369)

   and e.deptno = d.deptno

/

function :

create or replace function print_(p_empno in number) return varchar2 is

  l_result varchar2(100)

begin

  select wm_concat(decode(e.empno, p_empno, d.dname, null)) || ',' ||wm_concat(decode(e.empno, p_empno, e.ename, null))

    into l_result

    from emp e, dept d

   where e.empno in

         ((select e1.mgr from emp e1 where e1.empno = p_empno), p_empno)

     and e.deptno = d.deptno

  return(l_result)

end

测试:

SQL> select print_(7369) from dual 

PRINT_(7369)

--------------------------------------------------------------------------------

RESEARCH,SMITH

SQL>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11950932.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存