关于oracle存储过程的一些知识点
一、创建一个存储过程,批量清空数据库中所有表的数据。
--清空数据库中所有表的数据
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存储过程的一些知识点的更多相关文章
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
- Oracle存储过程语法
原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- Oracle存储过程基本语法介绍
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
- MyBatis调用Oracle存储过程
MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...
- Oracle存储过程(转)
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- Oracle存储过程动态创建临时表/存储过程执行权限问题--AUTHID CURRENT_USER
关于Oracle存储过程执行权限问题的解决 http://blog.sina.com.cn/s/blog_6ceed3280101hvlo.html (2014-04-02 04:06:28) 转载▼ ...
- ORACLE存储过程学习
存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...
随机推荐
- 通配符+countif()解决大于15位数的计数问题
excel的最大精度是15位,如果一个单元格中存储的数字超过15位,那么函数在计算的时候将会出现问题,它们会将15位之后的数字变成0. 在这种情况下,需要在函数中加入通配符,例如,统计A列中,A1出现 ...
- Qt之QRadioButton
简述 QRadioButton部件提供了一个带有文本标签的单选框(单选按钮). QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮.单选框通常呈现 ...
- hdu 1829 A Bug's Life(分组并查集(偏移量))
A Bug's Life Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- hdu------2488Tornado(几何)
Tornado Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- Linux查看用户登陆历史记录
last 命令: 功能说明:列出目前与过去登入系统的用户相关信息. 语 法:last [-adRx][-f ][-n ][帐号名称-][终端机编号-] 补充说明:单独执行last指令,它会读取位于/v ...
- DataTable 中Distinct操作
DataTable dt = ds.Tables[]; DataView dataView = dt.DefaultView; DataTable dtDistinct = dataView.ToTa ...
- [转载]SAP BASIS学习手册
原文地址:SAP BASIS学习手册作者:sapren 1:)要用scc4定义一个新的client,同时定义好类型(T,P,D等) 2:)用user/pasword: (sap*/pass) ...
- CentOS 6.2下SVN服务器的安装与配置
安装了一下SVN服务器,本文没有与Apache整合,过程如下: 一,下载相关软件: [root@youxia201 test]# wget http://subversion.tigris.org/d ...
- TFS错误 TF31004:在连接带xxx.xxx.xxx.xxx上的Team Foundation Server时遇到错误。请等待几分钟,然后重试。如果问题仍然存在,请与服务器管理员联系
- [示例]NSDictionary编程题-字典的排序应用(iOS6班)
代码: #import <Foundation/Foundation.h> static NSString * const kName = @"name"; stati ...