JDBC 调用存储函数 存储过程

JDBC调用存储过程

步骤:

1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,

在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,

该方法指明如何调用存储过程。

{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}

{call <procedure-name>[(<arg1>,<arg2>, ...)]}

2:通过CallableStatement对象的registerOutParameter()方法注册out参数;

3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数;

若想将参数设置为null 可以使用setNull()方法

4:通过CallableStatement的excute()方法执行存储过程;

5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;

案例代码:

/*
 * 文件名:FunctionTest.java
 * 版权:Copyright by www.huawei.com
 * 描述:
 * 修改人:Cuigaochong
 * 修改时间:2015-8-28
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */

package com.jdbc.function;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

import org.junit.Test;

import com.jdbc.cgc.pro.OracleDbUtils;

/**
 * <一句话功能简述> <功能详细描述>
 *
 * @author 姓名 工号
 * @version [版本号, 2015-8-28]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class FunctionTest
{
    private OracleDbUtils utils = OracleDbUtils.getInstance();

    /**
     * <一句话功能简述>JDBC调用存储函数 <功能详细描述>
     *
     * @see [类、类#方法、类#成员]
     */
    @Test
    public void test00()
    {
        Connection conn = null;
        CallableStatement callableStatement = null;
        String sql = "{?=call get_sall(?,?)}";

        try
        {
            conn = utils.connection();
            // 1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,
            // 在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,
            // 该方法指明如何调用存储过程。
            // {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
            // {call <procedure-name>[(<arg1>,<arg2>, ...)]}

            callableStatement = conn.prepareCall(sql);

            // 2:通过CallableStatement对象的registerOutParameter()方法注册out参数;
            callableStatement.registerOutParameter(1, Types.NUMERIC);
            callableStatement.registerOutParameter(3, Types.NUMERIC);

            // 3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数;
            // 若想将参数设置为null 可以使用setNull()方法
            callableStatement.setInt(2, 80);

            // 4:通过CallableStatement的excute()方法执行存储过程;
            callableStatement.execute();

            // 5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;
            double sum = callableStatement.getDouble(1);
            long empCount = callableStatement.getLong(3);

            System.out.println(sum);
            System.out.println(empCount);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            utils.releaseSource(callableStatement, conn, null);
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 11:20:35

JDBC 调用存储函数 存储过程的相关文章

如何使用 JDBC 调用存储在数据库中的函数或存储过程

JDBC调用存储过程步骤:1 通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例.在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,<a

PL/SQL轻量版(四)——存储函数/存储过程

概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数据库中,并通过输入.输出参数或输入/输出参数与其调用者交换信息. 过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据. 一.存储函数 1.创建函数 内嵌函数 CREATE [OR REPLACE] FUNCTION function_name [ (argment [ { IN | I

如何使用JDBC调用存储在数据库中的函数或存储过程 */

//创建存储过程 alter proc [dbo].[proc_get_customer1] ( @sid varchar(10), @name varchar(20) out, @birth datetime out, @email varchar(30) out, @id char(10) out)with recompileas beginselect id,name,birth,email from customers where id<@sidselect @id=id,@name=n

Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数

1.存储过程 1.1.准备SQL -- 定义存储过程 create or replace procedure get_rax(salary in number,rax out number) as     --需要交税的钱     bal number; begin     bal := salary - 3500;     if bal<=1500 then        rax := bal * 0.03 - 0;     elsif bal<=4500 then        rax :

在Java语言中调用存储过程、存储函数、包头、包体

需要拷贝连接Oracle的jar包,路径如下图所示: 连接Oracle数据库的代码: package demo.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtils { private static Stri

使用 JDBC 调用函数 &amp; 存储过程

/** * 如何使用 JDBC 调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatment() { Connection connection = null; CallableStatement callableStatement = null; try { connection = JDBCTools.getConnection(); // 1. 通过 Connection 对象的 prepareCall() // 方法创建一个 Ca

JDBC学习笔记(10)——调用函数&amp;存储过程

如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement *    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串, *    该字符串用于指明如何调用存储过程 * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数 * 3.通过CallableStateme

java调用Oracle中的存储过程与存储函数

1 //调用存储过程 2 public static void testPro(){ 3 String driver = "oracle.jdbc.OracleDriver"; 4 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; 5 Connection conn = null; 6 CallableStatement cs = null; 7 8 try { 9 Class.forName(driver)

Oracle系列:(29)存储过程和存储函数

1.存储过程[procedure] 什么是存储过程? 事先运用oracle语法写好的一段具有业务功能的程序片段,长期保存在oracle服务器中,供oracle客户端(例如,sqlplus)和程序语言远程访问,类似于Java中的函数. 为什么要用存储过程? (1)PLSQL每次执行都要整体运行一遍,才有结果 (2)PLSQL不能将其封装起来,长期保存在oracle服务器中 (3)PLSQL不能被其它应用程序调用,例如:Java 存储过程与PLSQL是什么关系? 存储过程是PLSQL的一个方面的应用