create or replace procedure test_xg_p2(a in number,x out number) is
begin
x:=a;
end test_xg_p2;
java代码调用
public void test1() {
try {
String cnstr = "jdbc:oracle:thin:@127.0.0.1:1521:fruitkingdb";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(cnstr, "fruitking","123456");
CallableStatement cstmt = conn.prepareCall("{call test_xg_p2(?,?)}");
cstmt.setInt(1,105);
cstmt.registerOutParameter(2, OracleTypes.INTEGER);
cstmt.execute();
System.out.println("return value is " + cstmt.getInt(2));
cstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
create or replace procedure test_xg_p3(a in number,x out varchar2) is
begin
if a>=90 then
begin
x := 'A';
end;
end if;
if a<90 then
begin
x:='B';
end;
end if;
if a<80 then
begin
x:='C';
end;
end if;
if a<70 then
begin
x:='D';
end;
end if;
if a<60 then
begin
x:='E';
end;
end if;
end test_xg_p3;
java调用
public void test2() {
try {
String cnstr = "jdbc:oracle:thin:@127.0.0.1:1521:fruiktingdb";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(cnstr, "fruitking","123456");
CallableStatement cstmt = conn.prepareCall("{call test_xg_p3(?,?)}");
cstmt.setInt(1,87);
cstmt.registerOutParameter(2, OracleTypes.VARCHAR);
cstmt.execute();
System.out.println("return value is " + cstmt.getString(2));
cstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
带游标的存储过程
--为游标创建一个包,并定义一种类型
create or replace package into_xgtest
as
type cursorType is ref cursor;
end;
--创建存储过程,游标类型返回参数
create or replace procedure test_xg_p7(v_companyName in varchar,p_cursor out into_xgtest.cursorType) is
-- vs_sql varchar2(2000);
--v_companyName varchar2(100); --公司名称
begin
OPEN p_cursor FOR
select t.hotelid,t.hotelname
from hotel t
where t.hotelname like v_companyName||'%'
order by t.hotelid asc;
null;
end test_xg_p7;
java调用
public void test3(){
try {
String driver_class = "oracle.jdbc.driver.OracleDriver";
String cnStr = "jdbc:oracle:thin:@127.0.0.1:1521:fruitking";
Connection conn = null;
Class.forName(driver_class);
conn = DriverManager.getConnection(cnStr, "fruitking","123456");
CallableStatement cstmt = conn.prepareCall("{call test_xg_p7(?,?)}");
cstmt.setString(1,"浙江");
cstmt.registerOutParameter(2, OracleTypes.CURSOR);
cstmt.execute();
ResultSet rset = (ResultSet) cstmt.getObject(2);
while (rset.next()) {
System.out.println("id->" + rset.getString(1) + " name->" + rset.getString(2));
}
cstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
如果存储过程返回游标,我们需要声明一个`OUT`参数来接收。 4. **执行存储过程**:通过`pstmt.execute()`执行存储过程。这将打开一个游标,我们可以从游标中获取结果。 5. **处理游标结果**:使用`...
在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...
在Java编程中,调用Oracle数据库的存储过程并处理返回的游标是一项常见的任务。Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细...
我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果打印出来。 六、结论 本示例展示了如何使用 ...
调用存储过程的Java API主要是通过JDBC(Java Database Connectivity),它是Java平台的标准接口,用于与各种数据库进行交互。以下是调用包含游标返回的Oracle存储过程的基本步骤: 1. **连接数据库**: 使用`...
2. 准备CallableStatement对象,它是PreparedStatement的扩展,用于调用存储过程: ```java CallableStatement cs = conn.prepareCall("{ call PROC_NAME(?, ?) }"); ``` 这里的`PROC_NAME`是存储过程的名称,`?`是...
### Oracle存储过程、游标、函数的详解 #### 一、概述 在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作...
这段Java代码首先创建了一个CallableStatement对象,然后注册了Out参数(游标),执行存储过程,并从存储过程返回的结果集中读取数据。 总结一下,Oracle存储过程的Out游标是PL/SQL中返回多行结果的有效方式,Java...
### C#调用Oracle方法(包括调用存储过程) 在.NET框架中,使用C#语言进行数据库操作是一项常见的任务。本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。...
### iBatis调用存储过程返回游标 #### 存储过程简介 存储过程是预先编译并存储在数据库中的SQL代码块,它可以接受输入参数,执行一系列操作,并返回一个或多个输出结果。当需要频繁执行复杂的数据库操作时,使用...
第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;...
这里使用了`CallableStatement`来执行存储过程,因为它可以处理返回游标的存储过程调用。`registerOutParameter`方法用于声明第1个参数为输出参数,并指定其类型为`OracleTypes.CURSOR`。执行存储过程后,我们通过`...
本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括创建Type、PACKAGE和PROCEDURE,Java代码中调用存储过程,并获取结果集。这些知识点对深入了解Oracle存储过程和Java调用Oracle存储过程...
本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...
### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...
用 Java 调用 Oracle 存储过程时,需要使用 JDBC 驱动程序来连接 Oracle 数据库,然后使用 CallableStatement 对象来调用存储过程。 在存储过程中做简单动态查询 在存储过程中,做简单动态查询需要使用 EXECUTE ...
在Java编程中,有时我们需要调用Oracle数据库的存储过程,特别是当存储过程返回一个游标(Cursor)时,这种情况在处理大量数据或者分页查询时很常见。游标允许我们逐行处理结果集,而无需一次性加载所有数据,这对于...
在Oracle数据库中,存储过程...在Java应用中,我们可以使用JDBC的`CallableStatement`和`ResultSet`来调用存储过程并处理返回的结果。这种方式在处理大量数据或复杂的查询时,既高效又灵活,是数据库编程中常用的技术。