Oracle存储过程的几种调用方式

Oracle存储过程的几种调用方式

记录:284

场景: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 窗口执行,调用存储过程验证和测试存储过程。

DECLARE

FLAG NUMBER;

FAIL_INFO VARCHAR2(512);

BEGIN

PKG_ZBZ_PORTAL.PRO_INSERT_INFO_ARGS( '20220710',

FLAG,FAIL_INFO);

dbms_output.put_line('FLAG=' || FLAG);

dbms_output.put_line('FAIL_INFO=' || FAIL_INFO);

END;

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代码中调用存储过程

本例引用:https://blog.csdn.net/zhangbeizhen18/article/details/100127703

场景:

使用Java代码调用oracle的存储过程,本例使用JdbcTemplate模板类操作.

以上,感谢。

2022年7月12日

相关推荐

在 Windows 10 和 macOS 上輕鬆架設 FTP 伺服器 :: FTP應用與分享
彩票365官网下载安装

在 Windows 10 和 macOS 上輕鬆架設 FTP 伺服器 :: FTP應用與分享

📅 07-12 👁️ 5926
共享单车包月价格上涨!部分城市已涨破20元
彩票365官网下载安装

共享单车包月价格上涨!部分城市已涨破20元

📅 07-04 👁️ 6115
揭秘美国代购DW手表:价格优势大揭秘,真的划算吗?
365bet亚洲官网网址

揭秘美国代购DW手表:价格优势大揭秘,真的划算吗?

📅 07-15 👁️ 3973