技术交流群: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; -- 关闭事件