`

oracle存储过程调用,以及返回游标的存储过程调用

阅读更多
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();
}
}
分享到:
评论

相关推荐

    Java调用oracle存储过程通过游标返回临时表

    如果存储过程返回游标,我们需要声明一个`OUT`参数来接收。 4. **执行存储过程**:通过`pstmt.execute()`执行存储过程。这将打开一个游标,我们可以从游标中获取结果。 5. **处理游标结果**:使用`...

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    JAVA调用ORACLE存储过程游标使用

    在Java编程中,调用Oracle数据库的存储过程并处理返回的游标是一项常见的任务。Oracle存储过程可以封装复杂的业务逻辑,而游标则用于在结果集上进行迭代,特别是当结果集太大,不适合一次性加载到内存时。下面将详细...

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

    我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果打印出来。 六、结论 本示例展示了如何使用 ...

    java调用oracle存储过程(游标)相关

    调用存储过程的Java API主要是通过JDBC(Java Database Connectivity),它是Java平台的标准接口,用于与各种数据库进行交互。以下是调用包含游标返回的Oracle存储过程的基本步骤: 1. **连接数据库**: 使用`...

    Oracle 存储过程JAVA调用存储过程 游标使用

    2. 准备CallableStatement对象,它是PreparedStatement的扩展,用于调用存储过程: ```java CallableStatement cs = conn.prepareCall("{ call PROC_NAME(?, ?) }"); ``` 这里的`PROC_NAME`是存储过程的名称,`?`是...

    Oracle存储过程、游标、函数的详解

    ### Oracle存储过程、游标、函数的详解 #### 一、概述 在Oracle数据库中,存储过程、游标和函数是非常重要的组成部分,它们为数据库管理提供了强大的编程能力。通过学习这些概念,我们可以更加灵活地管理和操作...

    Oracle存储过程out游标

    这段Java代码首先创建了一个CallableStatement对象,然后注册了Out参数(游标),执行存储过程,并从存储过程返回的结果集中读取数据。 总结一下,Oracle存储过程的Out游标是PL/SQL中返回多行结果的有效方式,Java...

    C#调用oracle方法(包括调用存储过程)

    ### C#调用Oracle方法(包括调用存储过程) 在.NET框架中,使用C#语言进行数据库操作是一项常见的任务。本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。...

    oracle 在一个存储过程中调用另一个返回游标的存储过程

    第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;...

    利用游标返回结果集的的例子(Oracle 存储过程).doc

    这里使用了`CallableStatement`来执行存储过程,因为它可以处理返回游标的存储过程调用。`registerOutParameter`方法用于声明第1个参数为输出参数,并指定其类型为`OracleTypes.CURSOR`。执行存储过程后,我们通过`...

    Delphi中调用oracle的存储过程返回数据集

    在 Delphi 中调用 Oracle 的存储过程返回数据集需要遵循一定的规则和格式,包括创建 Oracle 包和存储过程、使用 AdoConnection 和 AdoDataSet 组件连接到 Oracle 数据库、调用存储过程并返回数据集等步骤。

    oracle存储过程游标

    ### Oracle 存储过程与游标使用详解 在Oracle数据库管理中,存储过程与游标是两个非常重要的概念。它们可以提高数据处理的效率、增强应用程序的灵活性,并且能够简化复杂的数据库操作。本文将根据提供的内容,深入...

    java调用oracle存储过程返回结果集,Record,cursor参照.pdf

    本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括创建Type、PACKAGE和PROCEDURE,Java代码中调用存储过程,并获取结果集。这些知识点对深入了解Oracle存储过程和Java调用Oracle存储过程...

    oracle存储过程学习经典入门

    用 Java 调用 Oracle 存储过程时,需要使用 JDBC 驱动程序来连接 Oracle 数据库,然后使用 CallableStatement 对象来调用存储过程。 在存储过程中做简单动态查询 在存储过程中,做简单动态查询需要使用 EXECUTE ...

    Oracle存储过程返回结果集

    在Oracle数据库中,存储过程...在Java应用中,我们可以使用JDBC的`CallableStatement`和`ResultSet`来调用存储过程并处理返回的结果。这种方式在处理大量数据或复杂的查询时,既高效又灵活,是数据库编程中常用的技术。

    jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标

    标题中的“jdbc连接例子 Oracle CLOB转换为String java调用存储过程之输出游标”涉及到三个主要的Java数据库编程知识点:JDBC连接、Oracle数据库中的CLOB类型处理以及通过Java调用存储过程处理输出游标。 1. JDBC...

    Oracle_的存储过程及游标

    通过理解并熟练运用Oracle的存储过程和游标,开发者可以构建高效、模块化的数据库应用,提高代码复用性和数据库性能。在实际开发中,应根据需求合理选择使用函数或存储过程,并灵活运用游标处理复杂查询和结果集。

    java调用oracle存储过程或者函数

    调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....

Global site tag (gtag.js) - Google Analytics