- 浏览: 826806 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
Oracle存储过程及JDBC调用大全(原创)
-----------------无返回值示例------------------------
存储过程:
·添加学生,如果班级不存在,则先添加班级信息,再添加学生。
create or replace procedure sp_add_stu ( p_stu_id t_stu.s_id%type, --参数类型定义为字段类型 p_s_name t_stu.s_name%type, p_c_id t_class.c_id%type ) as num number; new_name t_stu.s_name%type; begin --处理姓名(如果不从查询结果取值,用 := ) new_name := substr(trim(p_s_name),1,8);
--将查询结果保存到变量,只能用select into select count(*) into num from t_class c where c.c_id=p_c_id; if(num=0) then insert into t_class(c_id,c_name) values(p_c_id,'新班'); end if;
insert into t_stu(s_id,s_name,c_id,s_sex) values(p_stu_id,new_name,p_c_id,'1');
commit;
dbms_output.put_line('执行完毕'); end; |
-----------------在Oracle中调用(无返回值)-----------------
SQL> call sp_add_stu(800,'李小龙',88);
Method called
SQL> |
-----------------JDBC调用(无返回值)-----------------
Connection conn = null;
CallableStatement cstmt = null;
conn = DriverManager.getConnection(url, user, password);
String procedure = "{call sp_add_stu(?,?,?)}";
cstmt = conn.prepareCall(procedure);
cstmt.setString(1, "2000");
cstmt.setString(2, "张三);
cstmt.setString(3, "40");
cstmt.executeUpdate();
-----------------返回结果值示例------------------------
·指定参数为out类型即可返回值
/** 存储过程与函数的区别:存储过程可以增删改,可以提交或回滚,而函数不能。 函数只能计算
如处理某个单据(进货单),如输入用户帐号,经过复杂处理以后, 返回此用户的欠费单据号 */ create or replace procedure sp_value( id1 in number, id2 out number ) as begin id2 := id1*200; end; |
-----------------调用(有简单返回值)----------------
Connection conn = null;
CallableStatement cstmt = null;
conn = DriverManager.getConnection(url, user, password);
String procedure = "{call sp_value(?,?)}";
cstmt = conn.prepareCall(procedure);
--------------------JDBC获取存储过程中的值-------------------
//学号、姓名、班级编号
cstmt.setString(1, "2000");
//注册输出参数
cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
cstmt.executeUpdate();
//从输出参数中获取值
int value = cstmt.getInt(2);
System.out.println("返回: "+value);
-----------------返回结果集示例------------------------
·建包,包中定义游标类型变量
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR; --自定义一个引用游标类型
end;
·存储过程返回指定游标类型变量
CREATE OR REPLACE PROCEDURE sp_select_stu
(
p_c_id t_class.c_id%type,
p_cursor out TESTPACKAGE.Test_CURSOR
自定义变量名 输出 变量所对应的数据类型(在包中自定义的)
) IS
BEGIN
OPEN p_CURSOR FOR
SELECT s.stu_id,s.s_name,to_char(s.s_birthday,'yy.mm') FROM t_stu s
where s.c_id=p_c_id
order by s.s_name;
END;
-----------------JDBC获取存储过程中的结果集---------------
Connection conn = null;
CallableStatement cstmt = null;
conn = DriverManager.getConnection(url, user, password);
String procedure = "{call sp_select_stu(?,?)}";
cstmt = conn.prepareCall(procedure);
//学号、姓名、班级编号
cstmt.setString(1, "C01");
//注册输出参数
cstmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
cstmt.execute();
//从输出参数中获取值
ResultSet rs = (ResultSet)cstmt.getObject(2);//第2个?所代表的参数
ResultSetMetaData rmd =rs.getMetaData();
while(rs.next()){
for(int i=0;i<rmd.getColumnCount();i++){
System.out.print(rs.getString(i+1)+" ");
}
System.out.println("");
}
rs.close();
发表评论
-
oracle中怎样查询数据表的哪个字段是主键
2011-03-20 18:17 1449selecttable_name,constraint_nam ... -
ORACLE树查询,startwithconnectbyprior
2011-03-20 18:12 977[url=#author]周 登朋[/url] ([url=m ... -
java.sql.SQLException: ORA-00933: SQL command not properly ended
2010-10-08 19:16 2265java.sql.SQLException: ORA-0093 ... -
Oracle数据显示--横表转纵表
2010-10-06 11:42 11491.建表-- Create table create ta ... -
Oracle学习笔记
2010-07-28 00:30 8631、set linesize 100; 设置长度 2、se ... -
《oracle 9i从入门到精通读书笔记2》
2010-07-26 19:51 1186第二章:PL/SQL基础 2.1 PL/SQL程序结构 ... -
《Oracle9i PL/SQL 从入门到精通读书笔记1》
2010-07-26 19:51 1160Oracle9i PL/SQL 从入门到精通学习笔记 第一章: ... -
Oracle域用户安装
2010-07-05 19:43 1155问题:如果在域中安装Oracle 10G, 在DataB ... -
存储过程无法代替触发器的特殊情况
2010-07-03 13:30 996在这里先解释一下推崇 ... -
informix的字符串类型详解(含与oracle的对比)
2010-07-03 13:29 1714lvarchar在9.4版本之后才可以用带指定长度的方式,如l ... -
oracle的字符串类型详解
2010-07-03 13:29 1615整理一下对于char,characte ... -
Oracle学习笔记
2010-07-01 20:29 7271、set linesize 100; 设置长度 2、se ... -
Oracle数据库函数(单行函数)
2010-07-01 20:28 882Oracle数据库函数(单行函数) Oracle中的函 ... -
oracle日期函数集锦
2010-07-01 20:26 746一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位, ... -
Oracle时间加减
2010-07-01 20:23 1056加法 select sysdate,add_months(s ... -
Oracle中数值的计算
2010-06-30 23:46 1095运算符 含义 · +(加) 加法 · ||(加) ... -
Oracle常见问题处理
2010-06-30 23:46 910一、Oracle的安装目录不能是中文,否则安装不成功。解决:O ... -
Oracle基础练习(三)
2010-06-30 23:45 10181、select 5/2,null*5 from dual, ... -
如何在Oracle中建表格时就指定主键和外键
2010-06-30 23:42 1480创建表的语法-创建表格语法:create table 表 ... -
Oracle触发器中when语句的用法
2010-06-30 23:41 1401案例:scott.emp表的销售员工资只能增加,不能减少 代 ...
相关推荐
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
JDBC调用oracle存储过程
JDBC存储过程的调用
使用Oracle数据库实现了jdbc调用存储过程进行增加数据、删除数据、修改数据、查询全部数据、查询单个数据
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
最简洁的代码,包含详细注释,全部测试通过,综合打包。 JDBC和ODBC连接Oracle数据库,连接txt/Access/Excel等文件,CallabelStatement存储过程调用等。
本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。...2.创建oracle存储过程脚本 3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例
Java 存储过程的调用规范将 ResultSet 映射到 REF CURSOR。在 Oracle9i 之前,不可能从 Java 存储过程直接返回一个 ResultSet,因为没有定义表单 ResultSet->REF CURSOR 的映射。Oracle9i 增加了此映射,允许从函数...
NULL 博文链接:https://vernonchen163.iteye.com/blog/1902788
针对java调用存储过程写的通用封装,oracle,mssql测试通过,附带测试脚本.以前写过一个,感觉不是很好,这个周末就重写了一个,大家多多提意见,是eclipse工程直接跑junit就行了,所有的东西都在里面.除了存储过程也可以...
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下
Oracle后台存储过程中调用Java代码块,以此来访问异构数据库数据(DB2)。 此方式适用场景: 原有业务逻辑均在后台实现,现要加入对异构数据库的数据访问或写入。 异构数据库的访问,多用数据联邦、透明网关或自行...
使用jdbc创建和调用oracle存储过程实现增删改查
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
JDBC的结构; SQL指令操作数据库以及常用的SQL函数的使用; JDBC访问数据库的四种基本形式、事务处理; 分页显示以及如何利用JavaBean操作数据库; 访问Oracle数据库以及操作Oracle存储过程;
目的:使用JDBC连接MySQL数据库并且完成增删改查。 介绍:1)一种执行SQL语言的Java API。... 5)jdbc可以直接调用数据库存储过程。 6)jdbc操作数据库的效率很高。 7)学会了jdbc,什么数据库存取数据都会了。
在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦,因此,我建议在调用存储过程时使用SQL92。 9、使用Object...
4.2 调用存储过程对象 4.2.1 CallableStatement对象的创建 4.2.2 IN、OUT及INOUT参数的使用 4.2.3 执行CallableStatement Object对象 4.2.4 CallableStatement对象使用实例 4.2.5 SQL Server存储过程编程经验...
基于某某系统平台的数据源迁移 1 一、背景 4 二、环境准备 4 1、软件 4 2、jar包 4 ...七、某某系统中调用 mysql存储过程 11 1、调用存储过程配置 11 2、存储过程中遇到的问题 13 八、后续迁移方案 17