`

How do I register out parameter in CallableStatement?

 
阅读更多

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;

 

 

分享到:
评论

相关推荐

    java数据库连接CallableStatement

    ### 三、CallableStatement 中 INOUT 参数的处理 #### 3.1 INOUT 参数的概念 INOUT 参数是指既可以作为输入参数又可以作为输出参数使用的参数。在调用存储过程时,INOUT 参数会被赋予一个初始值并传递给存储过程;...

    CallableStatement的用法

    对于同时支持输入和输出的参数(即 INOUT 参数),除了调用 `registerOutParameter` 方法之外,还需要在执行之前设置其输入值。这通常通过 `setXXX` 方法完成。执行后,可以再次使用 `getXXX` 方法获取更新后的值。 ...

    callablestatement

    ### 可调用语句(CallableStatement)与存储过程应用详解 #### 一、概述 在Java编程中,处理数据库操作时,`CallableStatement`是一个非常重要的接口,它继承自`PreparedStatement`,专门用于调用数据库中的存储...

    JDBC基础教程之CallableStatement.doc

    对于INOUT参数,除了调用`registerOutParameter`方法外,还需要调用`setXXX`方法设置其初始值。执行后,同样使用`getXXX`方法获取更新后的值。 ```java cstmt.setInt(1, 5); // 设置INOUT参数的初始值 cstmt....

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).doc

    ### CallableStatement调用Oracle存储过程返回结果集(ResultSet) #### 一、无返回值的存储过程调用 在本节中,我们通过一个具体的例子来详细介绍如何使用`CallableStatement`来调用Oracle数据库中的无返回值存储...

    java调用存储过程(含out参数)

    在Java编程中,调用...理解如何设置`IN`和`OUT`参数,并正确地执行和获取结果,将有助于提高代码的效率和可维护性。希望这个详细讲解对你有所帮助,如果你在实践中遇到任何问题,记得查阅相关文档或寻求社区支持。

    How To Use REF Cursors in JDBC Program

    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 * ...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).docx

    在Java编程中,CallableStatement接口是用来执行SQL存储过程或函数的。Oracle数据库是广泛使用的数据库系统,它支持存储过程的创建和调用。本篇将详细介绍如何使用CallableStatement调用Oracle存储过程,并处理返回...

    Oracle存储过程out游标

    Oracle存储过程中的“Out”游标是数据库编程中一种常用的技术,主要用于在PL/SQL块中返回结果集到调用者。在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle...

    CallableStatement调用Oracle存储过程返回结果集(ResultSet).pdf

    在Java编程中,CallableStatement接口是用来执行SQL存储过程或函数的。在Oracle数据库中,存储过程可以接收输入参数、输出参数或两者都有,并且可能返回结果集。本篇将详细阐述如何使用CallableStatement调用Oracle...

    CallableStatement的使用(存储过程).docx

    CallableStatement 是 Java JDBC API 中的一个接口,用于执行可以返回结果的 SQL 语句,比如存储过程。在 Java 中,当你需要调用数据库中的存储过程时,CallableStatement 是首选的工具。存储过程是一种预编译的 SQL...

    Java调用数据库存储过程[mysql测试通过]

    CREATE PROCEDURE procedure_name([IN|OUT|INOUT] parameter_name data_type, ...) BEGIN -- SQL statements END; ``` 在Java中,我们通常使用JDBC(Java Database Connectivity)来与数据库进行交互。调用存储...

    java调用存储过程

    System.out.println("Employee name: " + employeeName); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们假设存储过程`usp_GetEmployee`接收一个整数参数并返回一个字符串。...

    java中调用sql存储过程详细例子

    在JDBC中,`CallableStatement`提供了对存储过程的强大支持,不仅能够处理IN参数,还可以处理OUT和INOUT参数,使得与数据库的交互更加灵活。需要注意的是,不同的数据库系统可能对存储过程有不同的处理方式,因此在...

    DOA访问Oracle存储过程.rar_DOA_oracle_存储过程

    在IT行业中,DOA(Data Object Access)是一种常见的数据访问模式,它用于简化应用程序与数据库之间的交互。在本案例中,"DOA访问Oracle存储过程.rar_DOA_oracle_存储过程"是一个压缩包,其中包含了关于如何使用DOA...

    编程之java调用存储过程.doc

    parameter1 IN data_type, parameter2 OUT data_type, ... ) AS BEGIN -- SQL statements END procedure_name; ``` 例如,创建一个名为`TESTA`的无返回值存储过程: ```sql CREATE OR REPLACE PROCEDURE TESTA...

    JAVA调用存储过程

    )表示,这些问号可以代表输入(IN)、输出(OUT)或输入/输出(INOUT)参数。 创建CallableStatement对象需要通过Connection的prepareCall()方法。例如,如果你有一个名为getTestData的存储过程,接受两个参数但...

    java调用oracle存储过程精彩总结..pdf

    这里,`IN`参数是输入参数,`OUT`参数是输出参数,`IN OUT`参数既是输入又是输出。例如,一个无返回值的存储过程`TESTA`可能是这样的: ```sql CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2, PARA2 IN ...

Global site tag (gtag.js) - Google Analytics