java调用oracle含输入和输出数组的存储过程
来源:互联网 发布:黎姿长相知乎 编辑:程序博客网 时间:2024/06/03 22:41
package procedure;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.sql.ArrayDescriptor;
import util.DbUtil;
/**
* 测试 java调用oracle数据库的存储过程3 输入、输出数组
* @author sweetanan
*
*/
public class TestProcedure3 {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws Exception {
/*
此部分为oracle操作
create table test1(
name varchar2(20),
n1 number(9,2)
);
--1、创建数组
CREATE OR REPLACE TYPE TEST_ARRAY IS VARRAY(50000) OF NUMBER(9) --定长
CREATE OR REPLACE TYPE TEST_ARRAY2 AS TABLE OF NUMBER(9,2) --不定长
--2、开始分页存储过程
create or replace procedure testArr(name in varchar2, arrRows in TEST_ARRAY2, res out TEST_ARRAY2) Authid Current_User is
begin
res := TEST_ARRAY2(); --千万不能少
for i in 1 .. arrRows.COUNT loop
insert into test1(name, n1) values(name||arrRows(i), arrRows(i));
res.EXTEND; --数组扩展长度,第一次loop时,COUNT=1,以后依次+1;
res(res.COUNT) := arrRows(i) * 2;
--res(i) := arrRows(i) * 2;
end loop;
end;
/
*/
Connection con = DbUtil.getConnection();
CallableStatement cs = con.prepareCall("{call TESTARR(?, ?, ?)}");
ArrayDescriptor aDes = new ArrayDescriptor("TEST_ARRAY2", con);
double[] pras = {1.1, 2.2, 3.3, 4.5, 5, 6, 7, 8.8, 9, 9.5};
oracle.sql.ARRAY arr = new oracle.sql.ARRAY(aDes, con, pras);
cs.setString(1, "anan");
cs.setArray(2, arr);
cs.registerOutParameter(3, oracle.jdbc.OracleTypes.ARRAY, "TEST_ARRAY2");
cs.execute();
oracle.sql.ARRAY res = (oracle.sql.ARRAY)cs.getArray(3);
Object[] strs = (Object[])res.getArray();
for (Object str : strs)
System.out.println(str);
DbUtil.close(con, cs, null);
}
}
数据库连接工具类
package util;
import java.sql.*;
public class DbUtil {
public static Connection getConnection(){
Connection conn = null;
try {
//Class.forName("com.mysql.jdbc.Driver");
//conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp?useUnicode=true&characterEncoding=utf8","root","123456");
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@127.0.0.1:1521:myora";
String userName = "scott";
String password = "m123";
conn = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Connection conn, Statement sta, ResultSet res){
try {
if (res != null)
res.close();
if (sta != null)
sta.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
- java调用oracle含输入和输出数组的存储过程
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- java 调用Oracle存储过程(输入参数,输出参数,游标)的使用!
- java调用oracle中输入参数是数组类型的函数或者存储过程
- php 调用sqlsrv存储过程含输入和输出参数,亲测第二种输出很有效
- oracle使用带有输入和输出参数的存储过程
- oracle使用带有输入和输出参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- Java调用Oracle集合类型输出参数的存储过程
- Oracle带输出参数的存储过程和调用
- oracle存储过程输入输出数组对象和java调用情况
- ASP调用存储过程:有输入参数和输出参数的存储过程
- ASP调用存储过程:有输入参数和输出参数的存储过程
- java调用oracle存储过程的自定义类型(可变数组)。
- java调用oracle存储过程的自定义类型(可变数组)。
- Java调用Oracle存储过程传入数组参数的方法
- java调用输入参数、输出参数、输出参数为列表的存储过程(一)
- java调用输入参数、输出参数、输出参数为列表的存储过程(二)
- Bing Maps进阶系列二:使用GeocodeService进行地理位置检索
- 青春——青春飞扬
- 非ArcSDE环境下,怎么使用Esri的ST_Geometry存储
- bash shell 获取当前绝对路径
- 一个jq投票,无论成功与否3秒后自动关闭提示框
- java调用oracle含输入和输出数组的存储过程
- 挺快的
- 把字符串转换成整型数的库函数atoi
- Android JNI开发提高篇
- SQL Server 2008阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭
- Java基础------枚举常见7种用法
- dede_arctype 栏目管理表
- 解决com口被占用问题
- Android开发环境搭建~