oracle存储过程
什么是存储过程#
- 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
- 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。
存储过程的优点#
- 存储过程和函数以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。
- 存储过程和函数可由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或创建者本身才能执行存储过程或调用函数。
- 存储过程和函数的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程。
- 像其他高级语言的过程和函数一样,可以传递参数给存储过程或函数,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。
- 存储过程和函数需要进行编译,以排除语法错误,只有编译通过才能调用。
存储过程的调用#
call my_proc('参数1值', '参数2值');
DECLARE
参数1 VARCHAR2(50) := '参数1值';
参数2 VARCHAR2(50) := '参数2值';
BEGIN
my_proc(参数1, 参数2);
END;
- 使用java
public class CallStoredProcedure {
public static void main(String[] args) throws Exception {
String driverName = "oracle.jdbc.driver.OracleDriver";
String connectionString = "jdbc:oracle:thin:@//localhost:1521/orcl";
String userName = "USERNAME";
String password = "PASSWORD";
String storedProcedure = "my_proc";
String param1 = "参数1值";
String param2 = "参数2值";
Class.forName(driverName);
Connection con = DriverManager.getConnection(connectionString, userName, password);
CallableStatement cst = con.prepareCall("{call " + storedProcedure + "(?,?)}");
cst.setString(1, param1);
cst.setString(2, param2);
cst.execute();
ResultSet rs = cst.getResultSet();
while (rs.next()) {
// 处理结果集
}
cst.close();
con.close();
}
}
参考#
https://m.php.cn/faq/519415.html
https://blog.csdn.net/weixin_30819085/article/details/101741824
作者:hasome
出处:https://www.cnblogs.com/hasome/p/17698656.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~