1.什么是存储过程和存储函数
相同点:存储过程和存储函数都是完成特定功能的程序
区别: 存储函数可用return语句返回值,存储过程不可以
|
|
2.最简单的存储过程
|
|
3.带参数的存储过程
|
|
4.debug存储过程
5.存储函数
|
|
6.in和out参数
我们知道存储过程和存储函数的区别主要在于函数可以return一个结果,那么如何使存储过程和存储函数返回多个值呢?
- 存储过程和存储函数都可以有out参数
- 存储过程和存储函数都可以有多个out参数
- 存储过程可以通过out参数来实现返回值
原则:如果只有一个返回值,就用存储函数;否则,就用存储过程。
|
|
7.Java调用存储过程
1) 从Oracle客户端找到ojdbc14.jar
2) 创建java项目,将jdbc驱动加载到buildpath
3) 编写JDBC连接代码和调用存储过程代码
示例 调用上面查询用户信息的存储过程
|
|
结果
8.Java调用存储函数
数据库连接方法同上,新增一个Test方法如下
|
|
结果
9.如何在out参数中使用光标(cursor)
场景:加入我需要获取所有员工的信息,总不能传几十个参数到存储过程中的out参数吧?
在out参数中使用光标需要以下三个步骤
1) 声明一个包结构
2) 创建包头
3) 创建包体
9.1新建程序包,自动生成包头
|
|
9.2创建包体
|
|
使用desc查看程序包结构
|
|
9.3调用包中的存储过程(sqldeveloper工具不支持直接调用)
|
|
结果
10.总结
存储过程和存储函数主要区别在于return。
但是有了out参数,存储过程完全可以替代存储函数。
那为什么还有存储函数这个垃圾?
因为Oracle的版本问题,需要向下兼容。