一、创建一个存储过程,批量清空数据库中所有表的数据。

--清空数据库中所有表的数据
create or replace procedure truncateAllTables as
v_sql varchar2(2000);
CURSOR cur is
select table_name from user_tables order by table_name;
begin
--dbms_output.put_line('1111');
for rows in cur loop
v_sql := 'truncate table ' || rows.table_name;
--dbms_output.put_line(v_sql);
execute immediate v_sql;
end loop;
end;

执行存储过程如下:

exec truncateAllTables;

二、如何在plsql中调用一个有参数的存储过程呢?

比如这样一个存储过程:

create or replace procedure proc_CpNumber(cpNumber out varchar2) is
begin
....
-- 一些调试信息
dbms_output.put_line('==0'||cpNumber);
dbms_output.put_line('==0'||length(cpNumber));
--赋值
select 'E'||(to_number(substr(cpNumber,2,10))+1) into cpNumber from dual;
......
end;

调用方法如下:

--调用带有参数的存储过程
declare
cp_number varchar2(2000);
begin
proc_CpNumber(cp_number);
dbms_output.put_line(cp_number);
end;
/

三、在java代码中调用上面带有输出参数的存储过程如下:

public class OracleDBHelper {
static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
//开发环境
static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; static final String USER = "test123";
static final String PWD = "test123"; private OracleDBHelper() { }
private static Connection con = null; public static Connection getConnection() {
if(con == null) {
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USER, PWD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return con;
} public static void main(String[] args) throws Exception {
CallableStatement cStatement = OracleDBHelper.getConnection().prepareCall("{call proc_cpnumber(?)}");
cStatement.setString(1, "aa");
cStatement.registerOutParameter(1, java.sql.Types.VARCHAR);
cStatement.execute();
System.out.println(cStatement.getString(1));
OracleDBHelper.getConnection().close();
}
}

四、如果使用了mybatis框架,则调用上述存储过程,方法如下

首先定义调用的语句。

<select id="proc_cpnumber" statementType="CALLABLE" parameterType="java.util.HashMap" resultType="java.util.HashMap">
<![CDATA[
{call proc_cpnumber(#{eNumber,mode=OUT,jdbcType=VARCHAR})}
]]>
</select>

java代码调用如下:

    public synchronized String getNumber() {
String eNumber = "";
Map map=new HashMap();
getSqlSession().selectOne("proc_cpnumber",map);
eNumber=(String)map.get("eNumber");
return eNumber;
}

其中为了保证获取到的number的唯一性,需要加上同步锁。其中getSqlSession是通过注入的SqlSessionDao的getSqlSession获取返回的。

关于oracle存储过程的一些知识点的更多相关文章

  1. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  2. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  3. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  4. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  5. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  6. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  7. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  8. Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER

    关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...

  9. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

随机推荐

  1. 【bzoj1059】矩形游戏

    题意 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作 ...

  2. ubuntu修改更新源为163

    安装ubuntu后为了使下载及更新软件包更快,需要将自带的源更换为国内的源.以下以163为例: 1.首先备份下原始自带源: sudo cp sources.list /etc/apt/sources. ...

  3. [接口服务] Jersey Rest Demo

    http://files.cnblogs.com/files/avivaye/RestProject.rar

  4. eclipse 下面的folder,source folder,package的区别与作用

    首先明确一点,folder,source folder,package都是文件夹,既然是文件夹,那么任何的文件都可以往这三种文件夹下面的放.1.他们的区别folder就是普通的文件夹,它和我们wind ...

  5. Word Search [LeetCode]

    Problem Description: http://oj.leetcode.com/problems/word-search/ Basic idea: recursively go forward ...

  6. Java 中equals和toString()方法重写

    1,equals方法 (1)什么时候需要重写? 如果希望不同内存但相同内容的两个对象equals时返回true,则需要重写equals (2)怎么重写? class A { public int i; ...

  7. ajax异步加载小例子....(通俗易懂)

    web.html(用户端): <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. BZOJ1962 模型王子

    戳这里 /************************************************************** Problem: 1962 User: rausen Langu ...

  9. windows下mysql主从同步备份步骤

    目的:有两台MySQL数据库服务器A和B,使A为主服务器,B为从服务器,初始状态时,A和B中的数据信息相同,当A中的数据发生变化时,B也跟着发生相应的变化,使得A和B的数据信息同步,达到备份的目的. ...

  10. jquery 添加方法 : $.fn.方法名 = function(参数a,b,c){

    $.fn.image_checked = function(self,status,img_body,csrf_token){             $(this).live('click', fu ...