首先我们以一个简单的例子开始,在这个例子中,只存在一个返回值。存储过程如下
SQL> create or replace procedure lizhe (aa out varchar2)is
begin
select password into aa from passport where id='123111';
end lizhe;
/
补充说明:要注意的是这个存储过程存在一个(aa out varchar2)这样的标识,这是一个参数,out表示这是一个输出参数,在select语句中将password的值“into”到这个参数里
然后再java端:
public static void runProcedure(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.159:1521:TOPS","YAC3","YAC3");
java.sql.CallableStatement cs = con.prepareCall("{call lizhe(?)}");
cs.registerOutParameter(1, java.sql.Types.VARCHAR);
cs.execute();
System.out.print("value2:" + cs.getString(1)); //取出字符串——关键
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
补充说明:cs.registerOutParameter(1, java.sql.Types.VARCHAR);
重点只有这一句
2.多个返回值的
SQL> CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
/
Package created
SQL> CREATE OR REPLACE PROCEDURE TESTC(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR 'SELECT * FROM TB';
END TESTC;
/
Procedure created
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedure {
public TestProcedure() {
}
public static void main(String[] args ){
String driver = "oracle.jdbc.driver.OracleDriver";
String strUrl = "jdbc:oracle:thin:@192.168.0.159:1521:tops";
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, "yac3", "yac3");
CallableStatement proc = null;
proc = conn.prepareCall("{call testc(?)}");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.executeQuery();
rs = (ResultSet)proc.getObject(1);
while(rs.next())
{
System.out.println(rs.getString("VALUE"));
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
}
}
分享到:
相关推荐
为了更好地管理和处理数据,通常需要在Java程序中调用Oracle数据库中的存储过程或函数。本文将详细介绍如何通过Java来调用Oracle数据库中的函数,并特别关注带有不同类型的输入(in)、输出(out)及输入输出(in/...
Java可以通过JDBC调用Oracle存储过程,包括`CallableStatement`对象来执行过程并处理输入/输出参数。 9. **更新与权限保留** 使用`CREATE OR REPLACE PROCEDURE`语句更新存储过程时,原有执行权限不会丢失。 10....
接下来,我们来看如何在Oracle中定义、调用和删除存储过程。例如,创建一个简单的存储过程,其功能是将两个整数相加: ```sql CREATE PROCEDURE add_numbers (p_num1 NUMBER, p_num2 NUMBER, OUT_RESULT OUT NUMBER)...
Java中的JDBC(Java Database Connectivity)API允许开发人员连接到Oracle数据库并调用存储过程。以下是一个简单的示例,展示了如何在Java中调用上面定义的`add_numbers`存储过程: ```java import java.sql.*; ...
本文将深入探讨Oracle存储过程的创建、使用以及如何通过Java应用程序进行调用。 首先,我们来看一下如何在Oracle中创建存储过程。存储过程由`CREATE PROCEDURE`语句定义,其基本结构如下: ```sql CREATE OR ...
6. **Java调用Oracle存储过程**:可以通过JDBC的CallableStatement对象调用存储过程,根据返回值类型选择不同的调用方式。 **Java调用Oracle存储过程总结** 1. **无返回值的存储过程**:使用`CallableStatement....
本文将深入解析如何在Java环境中调用Oracle与SQL Server数据库的存储过程,实现跨数据库的通用性,以及如何通过一个共享方法来执行这一操作。 ### Oracle与SQL Server共用存储过程的原理 存储过程是一种预编译的...
对于Java开发者,可以使用JDBC的CallableStatement来调用Oracle存储过程。以下是三种常见情况的示例: 1. 无返回值的存储过程: ```java CallableStatement cs = connection.prepareCall("{call procedure_name(?, ...
6. 使用Hibernate或其他Java框架调用Oracle存储过程,需要了解对应的JDBC API或ORM框架的调用方法。 调用Oracle存储过程的方式有多种,以下是三种常见情况: - **无返回值的存储过程**:这类过程通常用于执行一些...
在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或大量数据操作时。本文将详细解析如何通过Java调用Oracle存储过程,包括无返回值和有返回值的情况。 首先,我们需要了解存储过程的...
- **Java调用Oracle存储过程.docx**:这份文档应该会提供Java通过JDBC调用Oracle存储过程的实例和最佳实践。 - **sql存储过程教程.txt**:这个文本文件可能是一个全面的存储过程教程,涵盖多种数据库系统,包括SQL ...
为了调用Oracle过程,我们通常会在Action类中创建一个方法,该方法负责与数据库交互。 在Oracle数据库中,过程(Procedure)是一种存储的PL/SQL代码块,可以接受参数、执行操作并返回结果。它们可以被看作是数据库...
在Java编程中,调用数据库的存储过程是常见的任务,特别是在复杂的业务逻辑处理和数据操作时。本示例将深入探讨如何使用Java来调用存储过程,并处理返回的结果。存储过程是预编译的SQL语句集合,可以提高性能、安全...
在Java编程中,调用数据库中的存储过程是常见的任务,特别是在需要执行复杂业务逻辑或批量操作时。存储过程是预编译的SQL语句集合,它们可以提高性能、封装复杂逻辑并提供更好的安全性。以下是一个详细的步骤,展示...
一、Oracle的Java存根(JDBC-JVM)集成 Oracle数据库内置了一个Java Virtual Machine (JVM),这使得它能够直接执行Java代码。通过Java存根(Java Stored Procedures, JSP),我们可以把Java方法封装为数据库过程,...
在MyBatis中调用这个存储过程需要解决两个问题:一是如何将Java中的数组转换为适合存储过程调用的形式,二是如何配置MyBatis以正确执行存储过程。 首先,MyBatis提供了`TypeHandler`接口,用于处理Java类型到JDBC...
在Oracle数据库中,存储过程是预编译的SQL语句集合,它们封装了特定的数据库...在Java应用中,可以使用JDBC调用这些存储过程,结合JavaBean来处理和展示分页结果。确保正确处理连接和资源关闭,以防止潜在的资源泄露。
1. **Java**:使用JDBC可以调用Oracle存储过程。首先加载Oracle驱动,然后创建连接,通过CallableStatement设置参数并执行存储过程。例如: ```java import java.sql.*; public class OraclePagingExample { ...
在Java端,可以利用Spring框架整合jdbcTemplate来调用Oracle存储过程。这里主要涉及以下步骤: 1. **配置数据源**:在Spring的配置文件中定义数据源。 2. **定义DAO层**:在DAO层定义方法,用于调用存储过程。 3. *...
在本文中,我们将深入探讨Oracle管理员的基本技能、PL/SQL编程、在Java中调用Oracle以及如何对Oracle数据库中的表进行各种操作。 一、Oracle基本使用 1. 链接命令:连接到Oracle数据库最常用的是SQL*Plus工具,...