- 浏览: 93674 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
grhglj:
能详细一点吗?都加到哪儿呀。
struts2.0中使用图形验证码 -
shingo7:
jotm哪来的2.3版
Spring引用Tomcat的 JTA事务 -
blogaaa:
这样配置完后,事务不能正常回滚,在同一个action中插入记录 ...
Spring引用Tomcat的 JTA事务
在网上找到一个帖子,照着做了一下,成功。
下面是测试代码和数据表存储过程
import java.sql.*;
/**
数据库表
CREATE TABLE TB_MONITOR (
ID NUMBER(20) NOT NULL,
MONITOR_OBJECT_CODE CHAR(10),
MONITOR_OBJECT_NAME VARCHAR2(180),
BRANCH_CODE CHAR(10),
SYSTEM_CODE CHAR(10),
DIREC_NAME VARCHAR2(180),
FILE_NUM NUMBER,
STATUS CHAR(10),
BEGIN_TIME TIMESTAMP,
END_TIME TIMESTAMP,
DATA_TIME TIMESTAMP,
MONITOR_TIME TIMESTAMP,
REMARK VARCHAR2(180),
CONSTRAINT PK_TB_MONITOR PRIMARY KEY (ID)
);
*/
public class OracleProcedureCall {
private static String driver = "oracle.jdbc.driver.OracleDriver";
private static String strUrl = "jdbc:oracle:thin:@192.168.1.90:1521:odsdb";
private static String userName = "odsdb";
private static String password = "ods";
private static Connection conn = null;
//获得数据库连接
public static Connection getConnection(){
try{
if(conn == null){
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, userName, password);
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
/*无返回值的存储过程
CREATE OR REPLACE PROCEDURE AddMonInfo
(
n_id tb_monitor.id%TYPE,
n_oc tb_monitor.monitor_object_code%TYPE,
n_on tb_monitor.monitor_object_name%TYPE,
n_bc tb_monitor.branch_code%TYPE,
n_sc tb_monitor.system_code%TYPE,
n_fn tb_monitor.file_num%TYPE,
n_st tb_monitor.status%TYPE,
n_rk tb_monitor.remark%TYPE
)
AS
BEGIN
--向表中插入数据
INSERT INTO tb_monitor(id,monitor_object_code,monitor_object_name,branch_code,system_code,file_num,status,remark)
VALUES(n_id,n_oc,n_on,n_bc,n_sc,n_fn,n_st,n_rk);
END AddMonInfo;
*/
public void testInsert(){
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.AddMonInfo(?,?,?,?,?,?,?,?) }");
proc.setString(1, "100");
proc.setString(2, "o_code");
proc.setString(3, "o_name");
proc.setString(4, "b_code");
proc.setString(5, "s_code");
proc.setString(6, "1");
proc.setString(7, "status");
proc.setString(8, "remark");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(conn!=null){
conn.close();
}
}
catch (SQLException ex1) {
}
}
}
/*有返回值的存储过程(非列表)
CREATE OR REPLACE PROCEDURE QueryMonInfo
(
n_id IN tb_monitor.id%TYPE,
n_oc OUT VARCHAR2,
n_on OUT VARCHAR2
) AS
BEGIN
SELECT monitor_object_code, monitor_object_name into n_oc,n_on FROM tb_monitor WHERE ID= n_id;
END QueryMonInfo;
*/
public String[] testQueryArray(){
String[] resultArr = null;
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.QueryMonInfo(?,?,?) }");
proc.setInt(1, 100);
proc.registerOutParameter(2, Types.VARCHAR);
proc.registerOutParameter(3, Types.VARCHAR);
proc.execute();
resultArr = new String[2];
resultArr[0] = proc.getString(2);
resultArr[1] = proc.getString(3);
System.out.println("=code=is= "+resultArr[0]);
System.out.println("=name=is= "+resultArr[1]);
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(conn!=null){
conn.close();
}
}
catch (SQLException ex1) {
ex1.printStackTrace();
}
}
return resultArr;
}
/*返回列表,需要使用package方式
先创建Package
CREATE OR REPLACE PACKAGE TESTPACKAGE AS TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
然后创建procedure
CREATE OR REPLACE PROCEDURE QueryMonResultSet(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM tb_monitor;
END QueryMonResultSet;
*/
public ResultSet testQueryResultSet(){
ResultSet rs = null;
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.QueryMonResultSet(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next()) {
System.out.println("ID:" + rs.getString(1) + "\tCODE:"+rs.getString(2)+"");
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
return rs;
}
public static void main(String[] args){
OracleProcedureCall call = new OracleProcedureCall();
call.testQueryResultSet();
}
}
下面是测试代码和数据表存储过程
import java.sql.*;
/**
数据库表
CREATE TABLE TB_MONITOR (
ID NUMBER(20) NOT NULL,
MONITOR_OBJECT_CODE CHAR(10),
MONITOR_OBJECT_NAME VARCHAR2(180),
BRANCH_CODE CHAR(10),
SYSTEM_CODE CHAR(10),
DIREC_NAME VARCHAR2(180),
FILE_NUM NUMBER,
STATUS CHAR(10),
BEGIN_TIME TIMESTAMP,
END_TIME TIMESTAMP,
DATA_TIME TIMESTAMP,
MONITOR_TIME TIMESTAMP,
REMARK VARCHAR2(180),
CONSTRAINT PK_TB_MONITOR PRIMARY KEY (ID)
);
*/
public class OracleProcedureCall {
private static String driver = "oracle.jdbc.driver.OracleDriver";
private static String strUrl = "jdbc:oracle:thin:@192.168.1.90:1521:odsdb";
private static String userName = "odsdb";
private static String password = "ods";
private static Connection conn = null;
//获得数据库连接
public static Connection getConnection(){
try{
if(conn == null){
Class.forName(driver);
conn = DriverManager.getConnection(strUrl, userName, password);
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}
/*无返回值的存储过程
CREATE OR REPLACE PROCEDURE AddMonInfo
(
n_id tb_monitor.id%TYPE,
n_oc tb_monitor.monitor_object_code%TYPE,
n_on tb_monitor.monitor_object_name%TYPE,
n_bc tb_monitor.branch_code%TYPE,
n_sc tb_monitor.system_code%TYPE,
n_fn tb_monitor.file_num%TYPE,
n_st tb_monitor.status%TYPE,
n_rk tb_monitor.remark%TYPE
)
AS
BEGIN
--向表中插入数据
INSERT INTO tb_monitor(id,monitor_object_code,monitor_object_name,branch_code,system_code,file_num,status,remark)
VALUES(n_id,n_oc,n_on,n_bc,n_sc,n_fn,n_st,n_rk);
END AddMonInfo;
*/
public void testInsert(){
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.AddMonInfo(?,?,?,?,?,?,?,?) }");
proc.setString(1, "100");
proc.setString(2, "o_code");
proc.setString(3, "o_name");
proc.setString(4, "b_code");
proc.setString(5, "s_code");
proc.setString(6, "1");
proc.setString(7, "status");
proc.setString(8, "remark");
proc.execute();
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(conn!=null){
conn.close();
}
}
catch (SQLException ex1) {
}
}
}
/*有返回值的存储过程(非列表)
CREATE OR REPLACE PROCEDURE QueryMonInfo
(
n_id IN tb_monitor.id%TYPE,
n_oc OUT VARCHAR2,
n_on OUT VARCHAR2
) AS
BEGIN
SELECT monitor_object_code, monitor_object_name into n_oc,n_on FROM tb_monitor WHERE ID= n_id;
END QueryMonInfo;
*/
public String[] testQueryArray(){
String[] resultArr = null;
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.QueryMonInfo(?,?,?) }");
proc.setInt(1, 100);
proc.registerOutParameter(2, Types.VARCHAR);
proc.registerOutParameter(3, Types.VARCHAR);
proc.execute();
resultArr = new String[2];
resultArr[0] = proc.getString(2);
resultArr[1] = proc.getString(3);
System.out.println("=code=is= "+resultArr[0]);
System.out.println("=name=is= "+resultArr[1]);
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(conn!=null){
conn.close();
}
}
catch (SQLException ex1) {
ex1.printStackTrace();
}
}
return resultArr;
}
/*返回列表,需要使用package方式
先创建Package
CREATE OR REPLACE PACKAGE TESTPACKAGE AS TYPE Test_CURSOR IS REF CURSOR;
end TESTPACKAGE;
然后创建procedure
CREATE OR REPLACE PROCEDURE QueryMonResultSet(p_CURSOR out TESTPACKAGE.Test_CURSOR) IS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM tb_monitor;
END QueryMonResultSet;
*/
public ResultSet testQueryResultSet(){
ResultSet rs = null;
try {
CallableStatement proc = getConnection().prepareCall("{ call odsdb.QueryMonResultSet(?) }");
proc.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
proc.execute();
rs = (ResultSet)proc.getObject(1);
while(rs.next()) {
System.out.println("ID:" + rs.getString(1) + "\tCODE:"+rs.getString(2)+"");
}
}
catch (SQLException ex2) {
ex2.printStackTrace();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
finally{
try {
if(rs != null){
rs.close();
if(conn!=null){
conn.close();
}
}
}
catch (SQLException ex1) {
}
}
return rs;
}
public static void main(String[] args){
OracleProcedureCall call = new OracleProcedureCall();
call.testQueryResultSet();
}
}
发表评论
-
Drools与Spring集成 登录测试
2013-07-12 15:27 0转至: http://justsee.iteye.com/b ... -
Drools入门-----------环境搭建,分析Helloworld
2013-07-12 15:20 0转至: http://justsee.iteye.com/b ... -
H2学习
2013-07-12 15:11 0package test.h2; import ja ... -
BlockingQueue队列学习
2013-10-17 10:16 762package test; import java ... -
一个多线程计算器的实现
2013-07-12 14:56 0package test; import java.util ... -
JRobin Core学习
2012-12-04 14:29 4046原文地址: http://www.micmiu.com/ent ... -
Memcached学习——(四)
2012-11-28 17:11 0原文地址: http://snowolf.iteye.com/ ... -
Memcached学习——(三)
2012-11-28 17:10 0原文地址: http://snowolf ... -
Memcached学习——(二)
2012-11-28 17:08 977原文地址: http://snowolf.iteye.com/ ... -
Memcached学习——(一)
2012-11-28 17:07 1036原文地址: http://snowolf.iteye.com/ ... -
redis学习
2012-11-28 17:03 933原文地址:http://snowolf.iteye.com/b ... -
基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)
2012-11-28 16:55 788原文地址:http://www.cnblogs.com/jif ... -
JAI处理TIFF格式图片
2012-09-17 17:48 13295懒得多说,直接代码了。。。。 import java.awt. ... -
全面掌握Java的异常处理机制
2009-03-05 17:17 968你觉得自己是一个Java专 ... -
java.lang包概述
2009-03-05 17:02 132174.1. 接口 java.lang.Appendab ... -
select下拉列表动态显示选择公司及部门信息——级联
2008-11-25 12:29 1282//=================公司类方法======= ... -
人民币大小写转
2008-11-25 12:26 1081String HanDigiStr[] = new Strin ... -
身份证号转换15位与18位
2008-11-25 12:24 1612//开始 15位到18位的身份证号转换 //身份证号码由 ... -
使ApplicationResources.properties支持中文
2008-11-25 12:15 1311使ApplicationResources.propertie ... -
利用XMLBean轻轻松松读写XML
2008-11-25 12:11 942一、关于XML解析 XML在Java应用程序里变得越来越 ...
相关推荐
java调用oracle存储过程或者函数
JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程 JAVA中调用Oracle存储过程
通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...
Java调用oracle存储过程
java调用oracle存储过程返回结果集,Record,cursor参照.pdf
java调用oracle存储过程实现增删改查
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
讲有关java如何调用ORACLE存储过程以及游标使用,它只包含JAVA调用ORACLE存储过程游标使用(上),还有JAVA调用ORACLE存储过程游标使用(上),
java调用oracle存储过程.wps java调用oracle存储过程.wps java调用oracle存储过程.wps
自己整理的,JAVA调用ORACLE存储过程 例子。
本文用一个案例系统的介绍了怎样用java调用oracle存储过程
Java调用Oracle存储过程的方法
提供JAVA调用ORACLE存储过程通用类
NULL 博文链接:https://fruitking.iteye.com/blog/1447333
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
java 调用oracle存储过程 ,里面有很多的源代码,相信对初学java的很有帮助哦。
ibatis调用oracle存储过程分页