在 Oracle 中,可以将存储过程(PROCEDURE)定义在一个包(PACKAGE)中。

要调用包中的存储过程,需要使用包名和存储过程名来引用它们。以下是一个示例:

假设我们有一个名为 my_package 的包,其中包含一个名为 add_numbers 的存储过程,用于将两个数字相加。存储过程定义如下:

CREATE OR REPLACE PACKAGE my_package AS
PROCEDURE add_numbers(num1 IN NUMBER, num2 IN NUMBER, sum OUT NUMBER);
END my_package; CREATE OR REPLACE PACKAGE BODY my_package AS
PROCEDURE add_numbers(num1 IN NUMBER, num2 IN NUMBER, sum OUT NUMBER) AS
BEGIN
sum := num1 + num2;
END add_numbers;
END my_package;

要调用包中的存储过程,需要使用以下语法:

DECLARE
result NUMBER;
BEGIN
my_package.add_numbers
(10, 20, result);
DBMS_OUTPUT.PUT_LINE(result);
END;
在上面的示例中,我们首先使用 DECLARE 语句定义一个名为 result 的变量。然后,我们使用 my_package.add_numbers 来调用包中的存储过程,并指定输入参数 1020,以及输出参数 result。最后,我们使用 DBMS_OUTPUT.PUT_LINE 函数在控制台上输出结果。如果一切顺利,我们将在控制台上看到输出结果为 30。注意,此示例中使用的 DBMS_OUTPUT.PUT_LINE 函数用于输出结果到控制台,但在某些情况下,可能需要根据具体情况进行修改。
 
Java使用CallableStream调用
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Types; public class Example {
public static void main(String[] args) {
try {
// 1. 创建数据库连接
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "mypassword";
Connection conn = DriverManager.getConnection(url, username, password); // 2. 创建 CallableStatement 对象
String sql = "{call my_package.add_numbers(?, ?, ?)}";
CallableStatement stmt = conn.prepareCall(sql); // 3. 设置输入参数
int param1 = 10;
int param2 = 20;
stmt.setInt(1, param1);
stmt.setInt(2, param2); // 4. 注册输出参数
stmt.registerOutParameter(3, Types.INTEGER); // 5. 执行存储过程
stmt.execute(); // 6. 获取输出参数
int result = stmt.getInt(3);
System.out.println("Result: " + result); // 7. 关闭连接和语句
stmt.close();
conn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
 

Oracle存储过程 Call使用的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  10. C# 获取 oracle 存储过程的 返回值1

    /// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename"& ...

随机推荐

  1. 与IE浏览器相关的问题(一)

    使用<input class="input" type="password" /> 密码框时,会出现密码显示状态的图标, 可以使用以下代码消除, . ...

  2. Java07 异常

    一.Error 和 Exception 1.什么是异常 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格 ...

  3. PHY6230 高性价比低功耗高性能 集成32-bit MCU BLE5.2+2.4G芯片

    PHY6230 是一款高性价比低功耗高性能Bluetooth LE 5.2系统级芯片,集成32-bit高性能低功耗MCU,16KB OTP,8KB Retention SRAM和64KB ROM,可选 ...

  4. Qt 字符串相等判断问题

    QString str = "0"; if (QString(param.value.data()) == QStringLiteral("空")) { str ...

  5. Linux常用命令-Java web环境

    Linux 常用命令 大部分命令推荐sudo运行 端口和PID互查 # 根据端口查询PID $ lsof -i:8080 # 根据端口查询PID $ fuser -i 8080/tcp # 根据PID ...

  6. 实用的JavaScript技巧

    1.数组去重 let arr = [...new Set([1,2,3,2,1])]; //输出:[1, 2, 3] 2.删除数组中的虚值(undefined .null.NaN.0 .'' .fal ...

  7. 浅谈Redis与分布式锁

    为什么需要分布式锁 Redis如何实现分布式锁 如何避免死锁? 锁被别人释放怎么办? 锁过期时间不好评估怎么办? Redlock 真的安全吗 为什么要在多个实例上加锁? 为什么大多数实例加锁成功,才算 ...

  8. 2022年JMUCTF WP

    2022年JMUCTF WP crypto 2,Are you ok Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. ...

  9. 从零搭建hadoop集群之节点间免密登录

    我这里有三台虚拟机 分别是 hadoop01 hadoop02 hadoop03 1.所有节点切入到hadoop用户 2.分别再三个节点上输入 ssh-keygen 命令(输入命令后敲回车键三下)  ...

  10. fastapi四:uvicorn.run支持的参数

    `app:指定应用app,'脚本名:FastAPI实例对象'.FastAPI实例对象 host: 字符串,允许被访问的形式 locahost.127.0.0.1.当前IP.0.0.0.0,默认为127 ...