`

Oracle存储过程的编写以及程序的实现

阅读更多
-- 创建表
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
0
0
分享到:
评论

相关推荐

    oracle存储过程编写

    Oracle存储过程是数据库管理系统中的一种重要程序设计组件,它允许用户在数据库中执行复杂的操作序列,而不仅仅局限于简单的SQL查询。在Oracle中,存储过程是由一个或多个SQL语句和PL/SQL块组成的,可以被封装起来并...

    VFP调用ORACLE存储过程数据库接口程序.pdf

    本文将介绍如何在Windows平台上利用VFP调用Oracle存储过程,以及实现Oracle数据库内容向VFP数据表的自动转换。 首先,我们来了解Oracle数据库。Oracle数据库是一种基于SQL的大型关系型数据库系统,它以支持多用户、...

    Oracle存储过程编写与调试

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写一组SQL语句和PL/SQL块,并将它们作为一个单元来执行。这极大地提高了代码的重用性和数据库操作的效率。下面我们将深入探讨Oracle存储过程...

    Oracle存储过程最基本的开发规范

    ### Oracle存储过程开发基本规范详解 #### 一、概述 Oracle存储过程作为一种强大的数据库编程工具,在企业级应用中被广泛采用。为了确保存储过程的质量、可读性和可维护性,制定一套合理的编码规范至关重要。本文将...

    oracle存储过程-帮助文档

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL语句和PL/SQL块,形成可重复使用的代码单元。这篇博客“oracle存储过程-帮助文档”可能提供了关于如何创建、调用和管理Oracle存储过程...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、Java 等。存储过程可以封装复杂的业务逻辑,提高数据库的安全性和性能。 二、CallabledStatement ...

    使用Java编写Oracle存储过程.pdf

    在介绍使用Java编写Oracle存储过程之前,我们首先需要了解存储过程的基本概念以及使用它们的好处。存储过程是存储在数据库中的一段预编译和优化过的代码,可以包含复杂的业务逻辑。它们在第一次执行后被编译并存储在...

    pb中执行oracle存储过程脚本

    标题中的“pb中执行oracle存储过程脚本”指的是在PowerBuilder(简称PB)环境中调用Oracle数据库的存储过程。PowerBuilder是一种可视化的开发工具,常用于构建数据驱动的应用程序。Oracle存储过程则是在Oracle数据库...

    Oracle存储过程开发的要点

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,用于封装一系列SQL和PL/SQL代码,以实现特定的功能。在Oracle中,存储过程可以提高应用程序的性能,因为它减少了与数据库的交互次数,并允许在数据库级别...

    oracle 事务 回滚 存储过程

    ### Oracle存储过程 存储过程是在数据库中预编译的一组SQL语句,用于执行复杂的业务逻辑或数据操作。它们可以接受输入参数,执行一系列数据库操作,并返回结果。在Oracle中,存储过程使用PL/SQL编写,可以在数据库...

    oracle 存储过程 案例

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL和PL/SQL语句,形成一个可重复使用的程序单元。这个“Oracle存储过程案例”提供了丰富的学习材料,帮助用户从入门到精通掌握...

    oracle存储过程教程

    在Java开发中,Oracle存储过程常被用于后端数据库操作,与Java应用程序进行交互,实现业务逻辑。 首先,理解存储过程的概念是必要的。存储过程是一组预先编译的SQL语句,它们以函数的形式存储在数据库中,可以接受...

    oracle存储过程实例

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程在数据库中预先编译并存储,这样在执行时能提高效率,因为它避免了每次调用时的重新...

    oracle存储过程学习经典(实例)

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL和PL/SQL语句,形成一个可重用的代码块。这个"Oracle存储过程学习经典(实例)"资源显然是为初学者设计的,旨在帮助他们掌握如何...

    oracle存储过程笔记

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写一组SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程的概念类似于高级编程语言中的模块,通过参数传递来实现数据的交互,体现了模块...

    delphi调用Oracle的存储过程

    4. **编写事件处理程序**:双击`Button1`,在`Button1Click`事件处理程序中编写代码以调用Oracle存储过程。 #### Delphi中调用Oracle存储过程 以下是完整的Delphi代码示例,用于调用上述创建的Oracle存储过程: `...

    pb源码编写执行oracle存储过程的程序

    标题 "pb源码编写执行oracle存储过程的程序" 涉及到的主要知识点是使用PowerBuilder(pb)作为开发工具,来与Oracle数据库交互并执行存储过程。在Oracle数据库中,存储过程是一组预编译的SQL语句和PL/SQL代码,可以...

    oracle存储过程例子

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写包含了一系列SQL和PL/SQL语句的程序单元,用于执行特定的任务。在数据库管理、数据处理和业务逻辑实现方面,存储过程扮演着不可或缺的角色...

    oracle存储过程学习资料

    在本学习资料中,你将深入理解Oracle存储过程的创建、调用、调试以及优化等多个方面。 1. **存储过程的创建**: Oracle存储过程通过`CREATE PROCEDURE`语句来定义。你可以指定输入参数、输出参数、输入输出参数,...

Global site tag (gtag.js) - Google Analytics