909422229_oracle存储过程与函数、定时器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a909422229/article/details/84891791

技术交流群:958923746,有学习视频,文档等。

零、存储过程定义:存储过程在我们的工作中经常使用,具有很多的优点,下面汇总一下。【百度到的比较细致】

       1. 运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通sql快。    

  2.  减少网络传输:存储过程直接就在数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其它服务器,所以会减少一定的网络传输。但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。

  3. 可维护性:的存储过程有些时候比程序更容易维护,这是因为可以实时更新DB端的存储过程。  有些bug,直接改存储过程里的业务逻辑,就搞定了。 

  4. 增强安全性:提高代码安全,防止 SQL注入。这一点sql语句也可以做到。

  5. 可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起。方便以后的扩展和DBA维护优化。

一、存储过程与自定义函数定义不同点

        相同点: 完成特定功能的程序

       不同点:是否用return语句返回值 

       1、存储过程用户在数据库中完成特定操作或者任务(如插入,删除等),函数用于返回特定的数据。

  2、存储过程声明用procedure,函数用function。

  3、存储过程不需要返回类型,函数必须要返回类型。

  4、存储过程可作为独立的pl-sql执行,函数不能作为独立的plsql执行,必须作为表达式的一部分。

  5、存储过程只能通过out和in/out来返回值,函数除了可以使用out,in/out以外,还可以使用return返回值。

  6、sql语句(DML或SELECT)中不可用调用存储过程,而函数可以。

二、存储过程优点,【个人总结到的比较精简】

      1.代码精简一致,一个存储过程可以用于应用程序代码的其他地方

      2.可维护性高,更新存储过程只需要在数据库中更改即可,无需更改代码的业务逻辑.

      3 .程序执行效率更高、安全性更好,建立之后 已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题.

三、Oracle存储过程:

DELIMITER ;;   更换默认的结束符.
procedure :存储过程  
存储过程创建:
CREATE PROCEDURE test_proce()
BEGIN
INSERT INTO t_test(a) VALUES(RAND() * 100);
END//
索引调用:
	ORACLE :   CALL 存储过程名称.    exec  存储过程.

oracle创建存储过程,简单例子

四、Java调用存储过程范例

五、oracle定时器创建,开启、关闭

-- 简单例子
CREATE event IF NOT EXISTS eventJob 
ON SCHEDULE EVERY 2 SECOND 
ON COMPLETION PRESERVE
DO CALL SP_procedure('');
CALL 

ALTER EVENT eventJob ON  COMPLETION PRESERVE ENABLE;  -- 开启事件
ALTER EVENT eventJob ON  COMPLETION PRESERVE DISABLE;  -- 关闭事件 

猜你喜欢

转载自blog.csdn.net/a909422229/article/details/84891791