1.调用函数
CallableStatement cs=con.prepareCall("{?=call get_pname(?,?,?)}");
第一个?表示返回的值,后面的?可以是输入参数,也可以是输出参数。
第一个?是返回参数,所以必须有语句:
connection.registerOutParameter(1, Types.VARCHAR);(Types.varchar是类型)
后面的?如果是输出参数,应该也加上registerOutParameter语句:
connection.registerOutParameter(2, Types.VARCHAR);(2是第2个占位符,Types.varchar是类型)
最后打印输出的结果:
System.out.println(cs.getString(1)); (1是对应输出参数,第一个输出参数)
2.调用存储过程
CallableStatement cs=con.prepareCall("{call stu_pro(?,?,?)}");(与函数的区别是:没有?=)
java程序中要打印调用过程获得的值,需调用有输出参数的存储过程,用法和调用函数一样。
3.简单例子
package com.dgy.app;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
public class OraclePro {
/**
* 连接数据库
*/
public static Connection getConnection(){
Connection con = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@PC-200911181406:1521:dgy";
String user = "dwj";
String pwd = "dwj";
con = DriverManager.getConnection(url,user,pwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public static void main(String[] args) throws SQLException {
//System.out.println(OraclePro.getConnection());
Connection con=OraclePro.getConnection();
CallableStatement cs=con.prepareCall("{?=call get_pname}");//没有参数的函数
cs.registerOutParameter(1, Types.VARCHAR);//第一个占位为输出,类型是varchar
cs.execute(); //不能忘记execute()
System.out.println(cs.getString(1)); //打印输出结果,对应registerOutParameter
}
}
//有1个输入参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname1(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2,25); //输入参数是25
cs.execute();
//有1个输出参数的函数
CallableStatement cs=con.prepareCall("{?=call get_pname2(?)}");
cs.registerOutParameter(1, Types.VARCHAR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(2));
//上面两个结果一样,因为两个意思是一样的
//1个输入参数,1个输出参数
CallableStatement cs=con.prepareCall("{?=call get_pname3(?,?)}");
//第1个是返回值,第2个是输入参数,第3个是输出参数
cs.registerOutParameter(1, Types.VARCHAR);
cs.setLong(2, 25);
cs.registerOutParameter(3, Types.VARCHAR);
cs.execute();
System.out.println(cs.getString(1));
System.out.println(cs.getString(3));
调用存储过程与调用函数的方法一样,就只是con.prepareCall("{call procedure(?,?)}")没有?=。
分享到:
相关推荐
最后,为了调试和测试存储过程和存储函数,你可以创建一个简单的测试程序,编写相应的存储过程和存储函数,然后使用上述Java代码进行调用,观察结果是否符合预期。记住,在编写和调用存储过程或存储函数时,一定要...
对于Oracle函数,由于它会返回一个值,所以在Java中调用时,需要使用`registerOutParameter()`方法先声明返回值的数据类型,然后通过`CallableStatement`的`getXXX()`方法获取返回值。例如,如果函数返回一个整数,...
3. **在MyBatis中调用存储过程** - 在Mapper接口中定义方法,方法名与存储过程名相同。 - 使用`@SelectProcedure`或在XML映射文件中配置`<select id="procName" statementType="CALLABLE">`,指定存储过程。 - ...
Java中调用存储过程主要通过JDBC(Java Database Connectivity)接口实现。以下是一步步的操作步骤: 1. **加载数据库驱动**:首先,确保已添加对应数据库的JDBC驱动库到项目类路径中,如MySQL的`mysql-connector-...
在Java中调用数据库中的存储过程是常见的操作之一,这不仅可以提高程序性能和代码可维护性,还可以更好地利用数据库的功能。根据提供的标题、描述以及部分内容,本文将详细介绍Java中调用存储过程的两种方法。 ####...
### 在Java中调用存储过程/存储函数 在Java中,可以使用JDBC驱动来调用存储过程或存储函数。通常需要使用`CallableStatement`对象来进行调用。 #### 调用存储过程 ```java Connection conn = DriverManager.get...
接下来,在Java中调用这些存储过程。首先,需要加载Oracle JDBC驱动,并建立数据库连接。 ```java String url = "jdbc:oracle:thin:@localhost:1521:mydb"; String driver = "oracle.jdbc.driver.OracleDriver"; /...
在Java中调用存储过程主要通过JDBC(Java Database Connectivity)接口实现。以下是一个基本的步骤: 1. **加载驱动**:首先,你需要加载对应数据库的JDBC驱动。例如,如果你使用的是MySQL,你可能需要`Class.for...
本文将详细探讨如何在Java中调用存储过程,并处理返回的数组类型数据。 首先,存储过程是一种预编译的SQL语句集合,它可以包含多个SQL操作,变量、条件判断、循环等控制结构。在Oracle数据库中,可以创建一个存储...
本文将深入探讨如何在Java中调用存储过程,以及这背后涉及的相关技术点。 首先,理解存储过程的基本概念至关重要。存储过程是由数据库管理系统(如MySQL、Oracle、SQL Server等)支持的,它允许开发者编写一系列...
在Java中调用存储过程主要通过`CallableStatement`接口实现,它是`PreparedStatement`的子接口,专用于调用存储过程和函数。 以下是一个基本的步骤来调用Oracle存储过程: 1. **建立数据库连接**: 使用`...
在数据库管理中,Java Database Connectivity (JDBC) 是一种用于执行SQL语句的标准API,它使得...通过理解和实践这些步骤,开发者可以轻松地在Java应用中调用数据库中的存储过程和函数,实现更高效、更灵活的数据处理。
在JDBC中调用存储过程通常涉及以下步骤: 1. 加载并注册数据库驱动,建立数据库连接。 2. 创建CallableStatement对象,它继承自PreparedStatement,专门用于调用数据库的存储过程。 3. 使用CallableStatement的`{}`...
#### 三、Java中调用存储过程 在Java中,可以通过`CallableStatement`类来调用存储过程。`CallableStatement`是`PreparedStatement`的子类,专门用于调用存储过程或函数。以下是调用存储过程的基本步骤: 1. **...
如何在java中调用存储过程 使用回调函数调用,数据库驱动用jdbc
为了在Java中调用存储过程,可以使用`CallableStatement`接口。`CallableStatement`继承自`PreparedStatement`,特别适合用于调用数据库中的存储过程或函数。以下是一个简单的示例: ```java import java.sql....
#### 在Java中调用存储过程 接下来,我们将在Java程序中调用上面创建的存储过程: ```java import java.sql.Connection; import java.sql.CallableStatement; import java.sql.SQLException; public class ...
在Java中调用存储过程主要依赖于`CallableStatement`接口,它是`PreparedStatement`的一个子类,专门用于执行存储过程或函数。 ##### CallableStatement `CallableStatement`是JDBC中的一个接口,它允许Java程序...
### JAVA调用存储过程知识点详解 ...本文详细介绍了如何在Java中调用存储过程,包括存储过程的创建、输入/输出参数的设置以及结果的处理。通过这种方式,可以有效地利用数据库的功能,提高应用的性能和安全性。