存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次,下面这篇文章主要给大家介绍了关于Oracle存储过程的几种调用方式,需要的朋友可以参考下
场景:Oracle存储过程调用方式,包括PL/SQL的SQL窗口中调用、在PL/SQL的命令窗口、在Procedures菜单列表中选中存储过程名称右键点击测试、在Package Bodies菜单列表中选中存储过程名称右键点击测试、在Jobs菜单列表选中已经配置Job的存储过程右键中点击运行、Java代码调用存储过程。
版本:Oracle Database 11g
工具:PL/SQL Developer
一、案例场景
1.基础环境
本例环境,使用Packages和Packages bodies管理存储过程Procedure。
Packages和Packages bodies名称:PKG_ZBZ_PORTAL
Procedure名称:PRO_INSERT_INFO_ARGS
完整SQL:
--包定义
CREATE OR REPLACE PACKAGE PKG_ZBZ_PORTAL IS
PROCEDURE PRO_INSERT_INFO_ARGS(IN_DATE IN VARCHAR2 := NULL,
FLAG OUT NUMBER,
FAIL_INFO OUT VARCHAR2);
END PKG_ZBZ_PORTAL;
--包体
CREATE OR REPLACE PACKAGE BODY PKG_ZBZ_PORTAL IS
PROCEDURE PRO_INSERT_INFO_ARGS(IN_DATE IN VARCHAR2 := NULL,
FLAG OUT NUMBER,
FAIL_INFO OUT VARCHAR2) IS
BEGIN
DECLARE
V_DATE DATE := TRUNC(SYSDATE - 1);
BEGIN
FLAG := 1;
FAIL_INFO := '';
IF (IN_DATE IS NOT NULL) THEN
V_DATE := TO_DATE(IN_DATE, 'YYYYMMDD');
END IF;
INSERT INTO B_LOG_INFO
SELECT SEQ_DEMO_ID.NEXTVAL,V_DATE,
SYSDATE,'1','执行成功',50,'DUAL'
FROM DUAL;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
FLAG := 0;
FAIL_INFO := '此次执行: ' || IN_DATE || ' 输出结果: FLAG = ' || FLAG ||
'异常信息: ' || SQLERRM;
ROLLBACK;
END;
END PRO_INSERT_INFO_ARGS;
END PKG_ZBZ_PORTAL;
注意以下测试,存储过程或者包都必须编译通过,即如下。
2.SQL窗口中调用存储过程
在PL/SQL Developer工具,菜单路径依次:文件->新建->SQL 窗口,即可以进入SQL窗口中。
场景:在存储过程提交后,直接在SQL 窗口执行,调用存储过程验证和测试存储过程。
var FLAG NUMBER;
var FAIL_INFO VARCHAR2(512);
exec PKG_ZBZ_PORTAL.PRO_INSERT_INFO_ARGS( '20220710',:FLAG,:FAIL_INFO);
3.命令窗口中调用存储过程
在PL/SQL Developer工具,菜单路径依次:文件->新建->命令窗口,即可以进入命令窗口中。
场景:在存储过程提交后,直接在命令窗口执行,调用存储过程验证和测试存储过程。
var FLAG NUMBER;
var FAIL_INFO VARCHAR2(512);
exec PKG_ZBZ_PORTAL.PRO_INSERT_INFO_ARGS( '20220710',:FLAG,:FAIL_INFO);
4.Procedures菜单列表中调用存储过程
在PL/SQL Developer工具,在左侧对象导航窗口,菜单路径依次:Users->用户名称->Objects->Procedures,选中需要测试的存储过程,右键选中,点击测试,即进入测试窗口,根据需求填写参数(如果有入参)。注意,能出现测试菜单前提是存储过程必须先编译提交。
场景:在存储过程提交后,直接在Procedures菜单列表中选中存储过程,调用存储过程验证和测试存储过程。
5.Package或Package Bodies菜单列表中调用存储过程
在PL/SQL Developer工具,在左侧对象导航窗口,菜单路径依次:Users->用户名称->Objects->Package或Package Bodies,选中需要测试的存储过程,右键选中,点击测试,即进入测试窗口,根据需求填写参数(如果有入参)。注意,能出现测试菜单前提是存储过程必须先编译提交。
场景:在存储过程提交后,直接在Package或Package Bodies菜单列表中选中存储过程,调用存储过程验证和测试存储过程。
5.1 右键包名称,选择菜单:查看说明与体。即进入包里存储过程。
5.2 右键存储过程名称,选择测试,即进入测试窗口。
6.Jobs菜单列表调用存储过程
在PL/SQL Developer工具,在左侧对象导航窗口,菜单路径依次:Users->用户名称->Objects->Jobs,选中需要运行的job任务,右键选中,点击运行。
场景:在存储过程提交后,直接在Jobs菜单列表中选中存储过程,调用存储过程验证和测试存储过程。
7.Java代码中调用存储过程
本例引用:
场景:
使用Java代码调用oracle的存储过程,本例使用JdbcTemplate模板类操作.
总结
到此这篇关于Oracle存储过程的几种调用方式的文章就介绍到这了,更多相关Oracle存储过程调用方式内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Oracle存储过程的几种调用方式图文详解
- 在阿里云CentOS 6.8上安装Redis 2023-09-12
- Oracle 删除大量表记录操作分析总结 2023-07-23
- SQL Server 2022 AlwaysOn新特性之包含可用性组详解 2023-07-29
- SQLSERVER调用C#的代码实现 2023-07-29
- redis清除数据 2023-09-13
- Numpy中如何创建矩阵并等间隔抽取数据 2023-07-28
- Mongodb启动报错完美解决方案:about to fork child process,waiting until server is ready for connections. 2023-07-16
- 基于Python制作一个简单的文章搜索工具 2023-07-28
- 搭建单机Redis缓存服务的实现 2023-07-13
- MySQL8.0.28安装教程详细图解(windows 64位) 2023-07-26