`
123003473
  • 浏览: 1060168 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

oracle带输入与输出参数的调用 [转载]

 
阅读更多
有表test,以下是测试数据:

select * from test;

id          info

----------------------

1           测试数据1

2           测试数据2

3           测试数据3

4           测试数据4

5           测试数据5

6           测试数据6

7           测试数据7

8           测试数据8

9           测试数据9

10         测试数据10

11         测试数据11

12         测试数据12

13         测试数据13

 

编写存储过程如下:

create or replace procedure test1(
n IN number,                --输入参数,主键id
info1 OUT varchar2       --输出参数,此存储过程只能返回单个值
)
as
begin
       select info into info1 from test where id=n;
end;
/

 

ORACLE的调用方式为:

declare 
accp varchar2(20);
begin
test1(10,accp);
DBMS_OUTPUT.PUT_LINE(accp);
end;
/

JAVA程序的调用方式为:

   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.77:1521:ora10","scott","tiger");
   System.out.println(conn);
   CallableStatement stm=conn.prepareCall("{call test1(?,?)}");
   stm.setInt(1, 10);
   stm.registerOutParameter(2, Types.VARCHAR);
   stm.execute();
   String info=stm.getString(2);//根据索引2得到输出参数的值
   System.out.println(info);
   conn.close();

 

 

如果是以游标作为参数,就是能返回多条记录,则存储过程如下:

1、 建一个程序包。如下:
create or replace package testpackage as
 type test_CURSOR IS REF CURSOR;
end testpackage;
 
2、建一个存储过程,如下:
create or replace procedure test2(p_CURSOR out testpackage.test_CURSOR)
IS
begin
open p_CURSOR for select * from test;
end test2;
/
3、在JAVA中调用此存储过程:
   Class.forName("oracle.jdbc.driver.OracleDriver");
   Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@192.168.10.77:1521:ora10","scott","tiger");
   System.out.println(conn);
   CallableStatement stm=conn.prepareCall("{call test2(?)}");
   stm.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
   stm.execute();               --不能使用executeQuery()
   ResultSet rs=(ResultSet)stm.getObject(1);
   while(rs.next()){
    System.out.println(rs.getInt(1)+"   "+rs.getString(2));
   }
   conn.close();



调用无入参的函数
地址:http://www.blogjava.net/keweibo/articles/270153.html

调用无入参的函数
函数定义CREATE OR REPLACE Function f_getstring Return Varchar2 Is
Begin
 Return ''String value'';
End f_getstring;

调用函数的Java 片断   CallableStatement cstmt = con.prepareCall("{?=call f_getstring}");
   cstmt.registerOutParameter(1, Types.VARCHAR);
   cstmt.execute();
   String strValue = cstmt.getString(1);
   System.out.println("The return value is:" + strValue);
   cstmt.close();

调用有一个入参,一个输出参数以及一个字符串返回值的函数
函数定义CREATE OR REPLACE Function f_Getinfo(Id Integer, Age Out Integer) Return Varchar2 Is
Begin
 Age := 10;
 Return ''The age is:'' || Id;
End f_Getinfo;
调用函数的Java代码片断   CallableStatement cstmt = con
     .prepareCall("{?=call f_getinfo(?,?)}");
   cstmt.registerOutParameter(1, Types.VARCHAR);
   cstmt.setInt(2, 11);
   cstmt.registerOutParameter(3, Types.INTEGER);
   cstmt.execute();
   String strValue = cstmt.getString(1);
   int age = cstmt.getInt(3);
   System.out.println("The return value is:" + strValue
     + " and age is:" + age);
   cstmt.close();



java oracle存储过程/函数(1):字符串数组、int数组传入存储过程
http://blog.csdn.net/crazylaa/article/details/5171881

java oracle存储过程/函数(2):字符串数组传出存储过程,动态sql如何fetch到游标
http://blog.csdn.net/crazylaa/article/details/5171973
分享到:
评论

相关推荐

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

    本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。这些知识点对于初学者来说尤为重要。 #### 前置知识 1. **C#基础**:理解C#的基本语法和概念。 2. **...

    Oracle带输入输出参数存储过程(包括sql分页功能)

    本文将深入探讨Oracle带输入输出参数的存储过程,以及如何结合SQL分页功能来优化查询。 首先,存储过程中的输入参数(IN)用于传递到存储过程中的数据,这些参数不可在存储过程中修改。例如,`p_id IN varchar2(150...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    帆软报表Oracle存储过程解决storeParameter1参数试用插件

    在帆软报表的设计过程中,当用户尝试调用一个Oracle数据库中的存储过程时,可能会遇到一个问题:即使存储过程本身并未声明任何输入或输出参数,设计界面仍会提示需要提供一个名为"storeParameter1"的参数。...

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

    3. 设置参数:使用`CallableStatement`对象的`setXXX()`方法(根据参数类型选择,如`setString()`, `setInt()`),按顺序设置存储过程或函数的输入、输出和输入/输出参数。 4. 执行存储过程:调用`CallableStatement....

    ORACLE的存储过程的异步调用

    ORACLE 存储过程的异步调用 本文讨论了 ORACLE 存储过程的异步调用方法,旨在解决客户端长时间等待存储过程执行的问题。主要思路是使用 DBMS_JOB 包将主处理存储过程作为任务提交到任务队列中,并通过 DBMS_PIPE 包...

    oracle实现带参数视图

    通过上述示例,我们可以看到 Oracle 中实现带参数视图的具体步骤与方法。这种方法不仅能够提高查询效率,还能极大地增强数据的安全性和灵活性。在实际应用中,开发人员可以根据业务需求进一步扩展和优化包中的函数与...

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    Java调用Oracle的过程和函数

    本文将详细介绍如何通过Java来调用Oracle数据库中的函数,并特别关注带有不同类型的输入(in)、输出(out)及输入输出(in/out)参数的函数。 #### 1. Oracle函数概述 在Oracle数据库中,函数是一种特殊的存储...

    Java调用oracle存储过程输出自定义对象或二维表

    在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...

    hibernate query调用oracle存储过程

    在上述代码中,我们使用了CallableStatement来处理带有输入和输出参数的存储过程。注意,对于输出参数,需要先注册其类型,然后在执行后通过`getXXX`方法获取值。 为了确保代码的可读性和可维护性,建议将这些调用...

    oracle 调用webservice

    Oracle 调用 Webservice 实现详解 本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 ...

    VFP调用ORACLE存储过程数据库接口程序.pdf

    程序的实现过程包括系统ADO配置、登录Oracle信息设置、程序参数设置、数据监测四个阶段。在ADO配置阶段,为了实现VFP数据与Oracle数据库之间的通讯,需要在数据转换服务器上安装Microsoft ODBC Driver for Oracle的...

    VB 调用oracle 带返回值的存储过程

    然后,创建OracleParameter对象来处理存储过程的输入和输出参数。 ```vb Dim cmd As New OracleCommand("get_max_user_id", conn) cmd.CommandType = CommandType.StoredProcedure ' 创建输出参数,注意Oracle的...

    oracle调用webservice接口地址demo

    Oracle数据库作为一款广泛使用的数据库管理系统,支持多种方式与其他系统进行交互,其中通过调用WebService接口是常见的一种实现方式。本文将详细解析一个具体的Oracle调用WebService接口的示例代码,并从中提炼出...

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

    接着,我们设置输入参数和输出参数,并执行存储过程。最后,我们获取输出参数的值并打印出来。 接下来,我们创建了一个名为 TESTPACKAGE 的包,包中包含了一个名为 TESTC 的存储过程。存储过程 TESTC 有一个输出...

    oracle 触发器实时调用java 中http接口

    总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...

    Oracle集合类型输出参数的PLSQL存储过程及其Java调用.docx

    ### Oracle集合类型输出参数的PL/SQL存储过程及其Java调用 #### 1. 引言 存储过程因其高效执行、事务处理能力以及安全性,在数据库应用程序中被广泛应用。特别是使用Oracle数据库时,PL/SQL(一种专为Oracle设计的...

    oracle plsql 通过utl_http调用 webservice

    在Oracle PL/SQL中调用Web Service通常涉及以下步骤: 1. **理解Web Service**:首先,你需要了解Web Service的工作原理,通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer...

    VB调用ORACLE存储过程

    - **Direction**:ParameterDirectionEnum枚举值,表示参数是输入、输出、输入输出还是返回值。 - **Size**:参数值的最大长度,对于变长数据类型,如字符串,应指定长度;对于固定长度的数据类型,如整数,可以省略...

Global site tag (gtag.js) - Google Analytics