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

procedure

阅读更多

原文地址 http://www.javaworld.com.tw/jute/post/view?bid=21&id=148969&sty=1&tpg=1&age=-1

 

這裡先不管 Java 搭配 procedure 恰不恰當
只是提供語法給大家參考

Oracle 版本:10g 或 9i
JDBC 版本:10.2.0.1.0 ( 在此應用上 10.1.0.2.0 版本連 9i 的可以, 但連 10g 的有問題 )

Procedure 語法

1
2
3
4
5
6
7
8
9
10
CREATE OR REPLACE PROCEDURE PRO_RETURN_RS(
  in_n in a.f_1%type
  , out_rs out sys_refcursor
  )
AS
BEGIN
  open out_rs for
  SELECT f_1,f_2 FROM a WHERE f_1>in_n ;
END;
/ 


這裡須要有一個 out 的參數, 型態是 sys_refcursor , 用來將資料集傳出
9i 以前必須自行宣告一個 cursor 型態, 到了 9i 後已有提供一個可以直接用的 sys_refcursor 型態了

Java 語法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection cn = DriverManager.getConnection(
  "jdbc:oracle:thin:@localhost:1521:sid","uid","pwd"
  );
 
//取得 ResultSet
CallableStatement call = cn.prepareCall("{call pro_return_rs(?,?)}");
call.setInt(1,1);
call.registerOutParameter(2, oracle.jdbc.driver.OracleTypes.CURSOR);
call.execute();
ResultSet rs = (ResultSet) call.getObject(2);
while(rs.next()){
  System.out.println(rs.getInt("f_1")+","+rs.getString("f_2")+"<BR>");
}
 
cn.close();


同樣的, 若是要用 procedure 傳出字串, 則可以參考以下語法

Procedure 語法
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE PROCEDURE PRO_RETURN_STRING(
  in_n in number
  ,out_s out varchar2
  )
AS
BEGIN
  SELECT f_2 into out_s FROM a WHERE f_1=in_n ;
END;
/ 


Java 語法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection cn = DriverManager.getConnection(
  "jdbc:oracle:thin:@localhost:1521:sid","uid","pwd"
  );
 
//取得 String
CallableStatement call = cn.prepareCall("{call pro_return_string(?,?)}");
call.setInt(1,1);
call.registerOutParameter(2, OracleTypes.VARCHAR);
call.execute();
String s = (String) call.getObject(2);
out.println(s);
 
cn.close();


分享到:
评论

相关推荐

    存储过程(Stored Procedure)

    ### 存储过程(Stored Procedure)详解 #### 一、存储过程的概念与作用 存储过程是一种预先编写并编译好的SQL语句集合,通常用于实现特定的数据库操作或逻辑处理。存储过程存储在数据库服务器中,用户可以通过指定...

    mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法

    创建存储过程的关键在于`CREATE PROCEDURE`语句。以下是一个创建名为`GetAllProducts`的存储过程的例子,它用于从`products`表中选取所有产品: ```sql DELIMITER // CREATE PROCEDURE GetAllProducts() BEGIN ...

    hbase-procedure-1.4.3-API文档-中文版.zip

    赠送jar包:hbase-procedure-1.4.3.jar; 赠送原API文档:hbase-procedure-1.4.3-javadoc.jar; 赠送源代码:hbase-procedure-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.4.3.pom; 包含翻译后...

    Procedure Call Standard for the ARM® Architecture

    ### Procedure Call Standard for the ARM® Architecture #### 关于文档 《Procedure Call Standard for the ARM® Architecture》是一份详细描述ARM架构应用程序二进制接口(ABI)中过程调用标准的重要文档。该...

    hbase-procedure-1.1.3-API文档-中英对照版.zip

    赠送jar包:hbase-procedure-1.1.3.jar; 赠送原API文档:hbase-procedure-1.1.3-javadoc.jar; 赠送源代码:hbase-procedure-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-procedure-1.1.3.pom; 包含翻译后...

    UL 2809:2020 Environmental Claim Validation Procedure(ECVP) for Recycled Content - 最新完整英文版(21页).pdf

    UL 2809:2020 Environmental Claim Validation Procedure(ECVP) for Recycled Content UL 2809Environmental Claim Validation Procedure (ECVP) for Recycled Content是 Underwriters Laboratories Inc. (UL)发布...

    Procedure Call Standard for the ARM 64-bit Architecture (AArch64)

    ### Procedure Call Standard for the ARM 64-bit Architecture (AArch64) #### 概述 本文档详述了ARM 64位架构(AArch64)中的过程调用标准,该标准是应用二进制接口(ABI)的重要组成部分。文档编号为ARMIHI0055...

    MySQL中创建procedure,function,trigger

    在 MySQL 中,创建存储过程的语法是:`CREATE PROCEDURE proc_Name ([proc_parameter]) routine_body`。这里的参数类型可以是 IN, OUT, INOUT,分别表示输入参数、输出参数和输入输出参数。例如,以下是一个显示 ...

    Delphi procedure and function

    标题“Delphi procedure and function”指向了编程领域中的一个具体概念,即Delphi语言中两种重要的代码组织单元:过程(procedure)和函数(function)。Delphi是一种快速应用程序开发工具,它使用Object Pascal...

    CREATE PROCEDURE DB2ADMIN.doc

    《DB2ADMIN.doc:CREATE PROCEDURE详解及调用方法》 在数据库管理中,存储过程是一种预编译的SQL代码集合,它被保存在数据库中,可以被多次调用,提高了数据处理的效率和应用程序的性能。本文将深入探讨DB2数据库中...

    oracle procedure

    根据提供的文件信息,我们可以从标题、描述以及部分代码中提炼出关于Oracle Procedure的关键知识点。以下是对这些知识点的详细解析: ### Oracle Procedure概述 **Oracle Procedure** 是一种存储过程,在Oracle...

    几个Oracle procedure实例

    下面将详细介绍Oracle procedure的一些关键知识点。 1. **创建存储过程**: 创建存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE procedure_name (parameter_list) AS declaration_section ...

    Oracle JOB,procedure,cursor 的使用

    本篇文章将深入探讨Oracle中的JOB、PROCEDURE(存储过程)和CURSOR(游标)的使用,这些是Oracle数据库开发中的核心概念。 首先,我们来看Oracle中的JOB。JOB是一种调度工具,允许用户在特定时间或间隔执行数据库...

    访问存储过程(或函数)一般以procedure标签来定义statement。

    ### 访问存储过程(或函数)通过IBATIS中的Procedure标签定义Statement 在IBATIS框架中,访问数据库中的存储过程或者函数是一项常见的需求。本文将深入探讨如何利用IBATIS提供的`procedure`标签来定义这样的操作,...

    实用CREATE PROCEDURE 创建存储过程

    在SQL Server中,`CREATE PROCEDURE` 是一个用于创建存储过程的关键字,它允许开发者定义一组预先编译的SQL语句,以便在未来重复使用。存储过程是数据库中的一个重要概念,它们提高了代码的重用性,简化了复杂的操作...

    oracle 包 procedure

    Oracle数据库中的“包”(Package)和“过程”(Procedure)是高级数据库编程的重要概念,它们在企业级应用开发中广泛使用。理解并熟练掌握这些概念对于任何Oracle数据库开发者来说都至关重要。 首先,我们来解释...

    存储过程通用分页procedure

    ### 存储过程通用分页Procedure详解 #### 标题:存储过程通用分页Procedure 此标题明确指出了本文档的主要内容是关于一种通用的存储过程实现方式,用于数据库中的分页查询。分页是在数据库操作中非常常见的一种...

    ARM THUMB procedure call standard

    ARM THUMB procedure call standard Release A-05 of this specification is the first public release, the ADS-1.0 release. Release B-01 is the ADS-1.1 release. The description of parameter passing has ...

    学习使用存储过程(Stored Procedure)

    ### 学习使用存储过程(Stored Procedure) 在IT领域中,存储过程(Stored Procedure)是一项重要的技术,尤其对于从事Web开发尤其是ASP编程的开发者来说,掌握如何使用存储过程至关重要。存储过程是一种预先编译并...

    用Delphi编写 Sybase ESP (Extended store procedure)

    标题 "用Delphi编写 Sybase ESP (Extended store procedure)" 提示我们关注的是如何在Sybase数据库环境中使用Delphi编程语言创建扩展存储过程(ESP)。Sybase ESP是一种强大的工具,允许开发人员将业务逻辑嵌入到...

Global site tag (gtag.js) - Google Analytics