-- 创建表
CREATE TABLE sys_user(
ID NUMBER PRIMARY KEY,
USERNAME VARCHAR2(20) NOT NULL,
PASSWORD VARCHAR2(20) NOT NULL,
SEX VARCHAR2(20) NOT NULL,
STATUS VARCHAR2(20) NOT NULL
);
-- 创建存储过程(新增一条用户信息)
CREATE OR REPLACE PROCEDURE P_USER_ADD(
P_ID IN NUMBER,
P_USERNAME IN VARCHAR2,
P_PASSWORD IN VARCHAR2,
P_SEX IN VARCHAR2,
P_STATUS IN VARCHAR2
)
BEGIN
INSERT INTO SYS_USER VALUES(P_ID,P_USERNAME,P_PASSWORD,P_SEX,P_STATUS);
END;
-- 创建存储过程(删除一条用户信息)
CREATE OR REPLACE PROCEDURE P_USER_DEL
(
P_ID IN NUMBER
, X_OUT_ID OUT NUMBER
) AS
BEGIN
DELETE SYS_USER WHERE ID=P_ID;
X_OUT_ID:=0;
EXCEPTION
WHEN OTHERS THEN
X_OUT_ID:=-1;
END;
-- 创建存储过程(查询全部用户信息)
CREATE OR REPLACE PROCEDURE P_USER_ALL(
X_OUT_RECORD OUT NUMBER,
X_OUT_CURSOR OUT SYS_REFCURSOR
) AS
BEGIN
OPEN x_out_cursor FOR
SELECT * FROM SYS_USER;
x_out_record := 0;
EXCEPTION
WHEN OTHERS THEN
x_out_record := -1;
END;
package com.ac.procedure.core.dm;
/**
* 用户实体
* @author Yan
* @date 2012-6-13 上午11:26:31
*/
public class SysUsers {
// 编号
public int id;
// 用户名
public String username;
// 密码
public String password;
// 性别
public String sex;
// 状态
public String struts;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getStruts() {
return struts;
}
public void setStruts(String struts) {
this.struts = struts;
}
}
package com.ac.procedure.core.util;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
/**
* 连接DB工具类
* @author Yan
* @date 2012-6-13 上午11:37:20
*/
public class BaseDao {
// 连接DB 驱动
public static String DRIVER="oracle.jdbc.driver.OracleDriver";
// 连接DB URL
public static String URL="jdbc:oracle:thin:@localhost:1521:orcl";
// 用户名
public static String USERNAME="scott";
// 密码
public static String PASSWORD="tiger";
/**
* 加载信息,连接DB
* @return Connection
*/
public Connection getConnection() {
Connection conn=null;
try {
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭DB连接
* @param conn DB连接对象
* @param call 调用储存过程对象
* @param rs 结果集对象
*/
public void closeAll(Connection conn,CallableStatement call,ResultSet rs){
try {
if (rs != null) {
rs.close();
}
if (call != null) {
call.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.ac.procedure.core.dao;
import java.util.List;
import com.ac.procedure.core.dm.SysUsers;
/**
* 用户接口
* @author Yan
* @date 2012-6-13 上午11:29:24
*/
public interface SysUsersDao {
/**
* 新增一条用户信息
* @param users 用户对象
* @return success or failure
*/
public String saveUsers(SysUsers users);
/**
* 删除一条用户信息
* @param id 编号
* @return success or failure
*/
public String deleteUsers(int id);
/**
* 查询全部用户信息
* @return List
*/
public List<SysUsers> getUserAll();
}
package com.ac.procedure.core.dao.impl;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import oracle.jdbc.driver.OracleTypes;
import com.ac.procedure.core.dao.SysUsersDao;
import com.ac.procedure.core.dm.SysUsers;
import com.ac.procedure.core.util.BaseDao;
/**
* 用户接口实现(调用存储过程)
* @author Yan
* @date 2012-6-13 上午11:52:58
*/
public class SysUsersDaoImpl extends BaseDao implements SysUsersDao {
// 连接DB 对象
private Connection conn;
// 存储过程 对象
private CallableStatement call;
// 结果集 对象
private ResultSet rs;
/*
* 新增一条用户信息(non-Javadoc)
* @see com.ac.procedure.core.dao.SysUsersDao#saveUsers(com.ac.procedure.core.dm.SysUsers)
*/
@Override
public String saveUsers(SysUsers users) {
String flag="success";
try {
String sql="{CALL P_USER_ADD(?,?,?,?,?)}";
conn=this.getConnection();
call=conn.prepareCall(sql);
call.setInt(1, users.getId());
call.setString(2, users.getUsername());
call.setString(3, users.getPassword());
call.setString(4, users.getSex());
call.setString(5,users.getStruts());
call.execute();
} catch (SQLException e) {
e.printStackTrace();
flag="failure";
} finally{
this.closeAll(conn, call, null);
}
return flag;
}
/*
* 删除一条用户信息(non-Javadoc)
* @see com.ac.procedure.core.dao.SysUsersDao#deleteUsers(int)
*/
@Override
public String deleteUsers(int id) {
String flag="success";
try {
String sql="{CALL P_USER_DEL(?,?)}";
conn=this.getConnection();
call=conn.prepareCall(sql);
call.setInt(1, id);
call.registerOutParameter(2, Types.INTEGER);
call.execute();
} catch (Exception e) {
e.printStackTrace();
flag="failure";
} finally{
this.closeAll(conn, call, null);
}
return flag;
}
@Override
public List<SysUsers> getUserAll() {
List<SysUsers> list=new ArrayList<SysUsers>();
SysUsers users=null;
try {
String sql="{CALL P_USER_ALL(?,?)}";
conn=this.getConnection();
call=conn.prepareCall(sql);
call.registerOutParameter(1, Types.INTEGER);
call.registerOutParameter(2, OracleTypes.CURSOR);
call.execute();
rs=(ResultSet) call.getObject(2);
while(rs.next()){
users=new SysUsers();
users.setId(rs.getInt(1));
users.setUsername(rs.getString(2));
users.setPassword(rs.getString(3));
users.setSex(rs.getString(4));
users.setStruts(rs.getString(5));
list.add(users);
}
} catch (Exception e) {
e.printStackTrace();
list=null;
} finally{
this.closeAll(conn, call, rs);
}
return list;
}
}
package com.ac.procedure.core.dao.impl;
import java.util.List;
import org.junit.Test;
import com.ac.procedure.core.dm.SysUsers;
public class SysUsersDaoImplTest {
SysUsersDaoImpl sysusers=new SysUsersDaoImpl();
@Test
public void testSaveUsers() {
SysUsers users=new SysUsers();
users.setId(1000000000);
users.setUsername("闫小甲");
users.setPassword("123456");
users.setSex("男");
users.setStruts("启用");
String result = sysusers.saveUsers(users);
System.out.println("保存用户:"+result);
}
@Test
public void testDeleteUsers() {
String result= sysusers.deleteUsers(1000000000);
System.out.println("删除用户:"+result);
}
@Test
public void testGetUserAll() {
List<SysUsers> list=sysusers.getUserAll();
for (SysUsers sysUsers : list) {
System.out.println("编号:"+sysUsers.getId()
+"\t用户名:"+sysUsers.getUsername());
}
}
}
- 大小: 16.5 KB
分享到:
相关推荐
通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...
pb编写的oracle数据库中执行存储过程脚本的程序;
存储过程编写经验和优化措施 存储过程编写经验和优化措施
教人使用包,程序,类,游标 教人使用包,程序,类,游标 教人使用包,程序,类,游标
在我的上一个银行项目中,我接到编写ORACLE存储过程的任务,我是程序员,脑袋里只有一些如何使用CALLABLE接口调用存储过程的经验,一时不知如何下手,我查阅了一些资料,通过实践发现编写ORACLE存储过程是非常不容易...
直接使用oracle 提供的库函数实现基于sokcet的短连接客户端通讯,无需再编写客户端程序进行通讯再调用存储过程。比较奇怪的应用,只因为系统改造中,原系统采用存储过程接口,而新系统客户端不改造,只改造服务段为 ...
存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。 * 可保证数据的安全性和完整性。 # 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全...
存储过程和函数 ORACLE编写的程序一般分为两类,一种是可以完成一定功能的程序叫存储过程;另一种就是在使用时给出一个或多个值,处理完后返回一个或多个结果的程序叫函数。这两种程序都存放在Oracle数据库字典中...
本书是一本关于使用Oracle成功开发应用程序的工具手册,由Oracle公司的资深开发人员...用interMedia、基于C的外部过程、Java存储过程和对象关系特性实现Oracle数据库功能的扩展;Oracle数据库安全管理的实现方式等。
本书是一本关于使用Oracle成功开发应用程序的工具手册,由Oracle公司的资深开发人员...用interMedia、基于C的外部过程、Java存储过程和对象关系特性实现Oracle数据库功能的扩展;Oracle数据库安全管理的实现方式等。
第10章-存储过程,提高程序执行的效率 什么是存储过程 在SQL*Plus中创建存储过程 使用PL/SQL工具创建存储过程 修改删除存储过程 第11章-触发器,保证数据的正确性 什么是触发器 SQL*PLUS操作触发器 使用PL/SQL...
工作中有很多数据以txt方式存储,需要导入oracle数据库处理(方便进行计算、统计),因文件较多,不便于手工处理,所以编写此程序以便进行数据导入。已经测试过,可以将数据导入oracle。
装好以后,打开程序,应该看到菜单栏里多了一个: 首先需要安装LR的.NETADD-IN,在开发环境编写代码,做数据库连接,然后调用执行存储过程。 装好以后,打开程序,应该看到菜单栏里多了一个: 然后添加一个LR...
《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的数据库管理(如安装与启动,用户权限、备份与...,以及Oracle的应用开发基础...
ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。 PL/SQL的优点 从版本6...
它们可以存储在数据库中成为存储过程和存储函数,并可以由程序来调用,它们在结构上同程序模块类似。 PL/SQL过程化结构的特点是: 可将逻辑上相关的语句组织在一个程序块内; 通过嵌入或调用子块,构造功能强大的...
针对配电网地理信息系统(GIS)数据存储技术方面目前存在的数据不一致、存取速度慢等问题,提出了一种基于Oracle...程序的运行结果表明实例所采用的数据存储方法能够在配电网GIS中实现空间数据和属性数据的一体化存储。