创建存储过程并用java调用实例
2013-10-17 17:53
435 查看
先要在pl/sql中建立相关表和存储过程
--《创建表》 create table test(id number,name varchar(20)); --《创建无返回值的存储过程》 create or replace procedure testa(para1 in number,para2 in varchar2) as begin insert into test(id,name) values (para1, para2); end testa; --《创建有返回值的存储过程》 create or replace procedure testb(para1 in number,para2 out varchar2) as begin select name into para2 from test where id= para1; end testb; --《创建有多条返回记录的存储过程》 --* 由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了 --1.建一个程序包 create or replace package testpackage as type test_cursor is ref cursor; end testpackage; --2.建立存储过程 create or replace procedure testc(p_cursor out testpackage.test_cursor) is begin open p_cursor for select * from test; end testc; --测试用 select * from test delete from test --测试创建存储过程小实例,用pl/sql创建时可以在browser的my objects中查看存储过程创建的失败与否,如下图所示,有红叉图标的表示没有编译成功 create or replace procedure say as begin dbms_output.put_line('hi'); end; --执行下面语句可在pl/sql output中查看结果 begin say; end;
用eclipse建立测试类TestProcedure
import java.sql.*; public class TestProcedure { /** * @param args */ public static void main(String[] args) { String driver = "oracle.jdbc.driver.OracleDriver"; String strUrl = "jdbc:oracle:thin:@192.168.16.161:1521:ora11g"; Connection conn = null; CallableStatement cstmt = null; ResultSet rs=null; try { Class.forName(driver); conn = DriverManager.getConnection(strUrl, "wu", "1"); /** 调用无返回值的存储过程 */ cstmt = conn.prepareCall("{ call testa(?,?) }"); cstmt.setInt(1, 1); cstmt.setString(2, "TestOne"); cstmt.execute(); System.out.println("插入数据成功"); /** 调用有返回值的存储过程 */ cstmt = conn.prepareCall("{ call testb(?,?) }"); cstmt.setInt(1, 1); cstmt.registerOutParameter(2, Types.VARCHAR); cstmt.execute(); String testPrint = cstmt.getString(2); System.out.println("name:"+testPrint); /** 调用有返回值且是多条记录的存储过程 */ cstmt = conn.prepareCall("{ call testc(?) }"); cstmt.setInt(1, 1); cstmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR); cstmt.execute(); rs = (ResultSet)cstmt.getObject(1); while(rs.next()) { System.out.println("id:" + rs.getString(1) + " name:"+rs.getString(2)); } } catch (Exception ex) { ex.printStackTrace(); } finally{ try { if(conn!=null){ conn.close(); } if(cstmt!=null){ cstmt.close(); } }catch (Exception e) { e.printStackTrace(); } } } }
参考:http://www.blogjava.net/TrampEagle/archive/2005/12/13/23605.html
相关文章推荐
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- 数据库技术_Orcale技术(0002)_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等)
- jstack应用实例,java方法调用阻塞实例,dubbo创建消费者阻塞。
- oracle存储过程procedure实例、调用 sql/plus调用存储过程 java调用存储过程
- Java如何根据类名和方法名创建类的实例,并调用对应方法?
- Java代理学习-创建动态类的实例对象及调用其方法
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
- 项目实例 声明包 创建存储过程,调用
- mysql创建 存储过程 并通过java程序调用该存储过程
- java中Property类配置文件,反射创建实例并调用这个类的方法
- pl/sql 有返回值的存储过程 java调用pl/sql过程 实例
- Oracle创建存储过程以及JAVA调用方法
- java 调用存储过程 实例
- java调用Sqlserver中存储过程语法实例.txt
- Navicat创建存储过程和触发器,Java调用
- 【Java进阶-Java动态代理与AOP】03 创建动态类的实例对象及调用其方法
- 创建存储过程和java调用存储过程
- mysql 创建存储过程 java程序调用该存储过程
- oracle实现存储过程的分页并用java代码调用存储过程
- java 调用存储过程 实例