Only for reference.
import java.sql.*; public class TestCallPrecedure { public static void main(String[] args) { Connection connection = null; try { connection = getConnection(); // Creates a CallableStatement for executing the // stored procedure String query = "call GET_DETAIL_BY_PRODUCT(?, ?, ?, ?)"; CallableStatement cb = connection.prepareCall(query); // Sets the input parameter cb.setString(1, "bag"); // Registers the out parameters cb.registerOutParameter(2, Types.VARCHAR); cb.registerOutParameter(3, Types.DECIMAL); cb.registerOutParameter(4, Types.INTEGER); // Executes the query cb.executeQuery(); // Gets the query result output System.out.println("Code : " + cb.getString(2)); System.out.println("Price : " + cb.getBigDecimal(3)); System.out.println("Quantity: " + cb.getInt(4)); } catch (Exception e) { e.printStackTrace(); } finally { try { closeConnection(connection); } catch (SQLException e) { e.printStackTrace(); } } } /** * Get a connection to database. * @return a connection to database. * @throws Exception when an exception occurs. */ private static Connection getConnection() throws Exception { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/kodejavadb"; return DriverManager.getConnection(url, "root", ""); } /** * Close a connection to database. * @param connection a connection to be closed. * @throws SQLException when an exception occurs. */ private static void closeConnection(Connection connection) throws SQLException { if (connection != null && !connection.isClosed()) { connection.close(); } } }
Mysql Stored Procedure:
DROP PROCEDURE IF EXISTS kodejavadb.GET_DETAIL_BY_PRODUCT; CREATE PROCEDURE kodejavadb.`GET_DETAIL_BY_PRODUCT`(IN vproduct varchar(30), OUT vcode varchar(5), OUT vprice decimal, OUT vqty int) BEGIN SELECT code INTO vcode FROM orcl.products WHERE name = vproduct; SELECT price INTO vprice FROM orcl.products WHERE name = vproduct; SELECT qty INTO vqty FROM orcl.products WHERE name = vproduct; END;
相关推荐
### 三、CallableStatement 中 INOUT 参数的处理 #### 3.1 INOUT 参数的概念 INOUT 参数是指既可以作为输入参数又可以作为输出参数使用的参数。在调用存储过程时,INOUT 参数会被赋予一个初始值并传递给存储过程;...
对于同时支持输入和输出的参数(即 INOUT 参数),除了调用 `registerOutParameter` 方法之外,还需要在执行之前设置其输入值。这通常通过 `setXXX` 方法完成。执行后,可以再次使用 `getXXX` 方法获取更新后的值。 ...
### 可调用语句(CallableStatement)与存储过程应用详解 #### 一、概述 在Java编程中,处理数据库操作时,`CallableStatement`是一个非常重要的接口,它继承自`PreparedStatement`,专门用于调用数据库中的存储...
对于INOUT参数,除了调用`registerOutParameter`方法外,还需要调用`setXXX`方法设置其初始值。执行后,同样使用`getXXX`方法获取更新后的值。 ```java cstmt.setInt(1, 5); // 设置INOUT参数的初始值 cstmt....
### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...
在Java编程中,调用...理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题,记得查阅相关文档或寻求社区支持。
PROCEDURE test_ref_cursor(v1 OUT gc, v2 IN VARCHAR2); END; CREATE OR REPLACE PACKAGE BODY test_ref_cursor AS PROCEDURE test_ref_cursor(v1 OUT gc, v2 IN VARCHAR2) IS BEGIN OPEN v1 FOR SELECT * ...
Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...
在Java编程中,CallableStatement接口是用来执行SQL存储过程或函数的。Oracle数据库是广泛使用的数据库系统,它支持存储过程的创建和调用。本篇将详细介绍如何使用CallableStatement调用Oracle存储过程,并处理返回...
Oracle存储过程中的“Out”游标是数据库编程中一种常用的技术,主要用于在PL/SQL块中返回结果集到调用者。在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle...
在Java编程中,CallableStatement接口是用来执行SQL存储过程或函数的。在Oracle数据库中,存储过程可以接收输入参数、输出参数或两者都有,并且可能返回结果集。本篇将详细阐述如何使用CallableStatement调用Oracle...
CallableStatement 是 Java JDBC API 中的一个接口,用于执行可以返回结果的 SQL 语句,比如存储过程。在 Java 中,当你需要调用数据库中的存储过程时,CallableStatement 是首选的工具。存储过程是一种预编译的 SQL...
CREATE PROCEDURE procedure_name([IN|OUT|INOUT] parameter_name data_type, ...) BEGIN -- SQL statements END; ``` 在Java中,我们通常使用JDBC(Java Database Connectivity)来与数据库进行交互。调用存储...
System.out.println("Employee name: " + employeeName); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们假设存储过程`usp_GetEmployee`接收一个整数参数并返回一个字符串。...
在JDBC中,`CallableStatement`提供了对存储过程的强大支持,不仅能够处理IN参数,还可以处理OUT和INOUT参数,使得与数据库的交互更加灵活。需要注意的是,不同的数据库系统可能对存储过程有不同的处理方式,因此在...
在IT行业中,DOA(Data Object Access)是一种常见的数据访问模式,它用于简化应用程序与数据库之间的交互。在本案例中,"DOA访问Oracle存储过程.rar_DOA_oracle_存储过程"是一个压缩包,其中包含了关于如何使用DOA...
parameter1 IN data_type, parameter2 OUT data_type, ... ) AS BEGIN -- SQL statements END procedure_name; ``` 例如,创建一个名为`TESTA`的无返回值存储过程: ```sql CREATE OR REPLACE PROCEDURE TESTA...
)表示,这些问号可以代表输入(IN)、输出(OUT)或输入/输出(INOUT)参数。 创建CallableStatement对象需要通过Connection的prepareCall()方法。例如,如果你有一个名为getTestData的存储过程,接受两个参数但...
这里,`IN`参数是输入参数,`OUT`参数是输出参数,`IN OUT`参数既是输入又是输出。例如,一个无返回值的存储过程`TESTA`可能是这样的: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN ...