- 浏览: 844174 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1523selecttable_name,constraint_nam ... -
ORACLE树查询,startwithconnectbyprior
2011-03-20 18:12 1003[url=#author]周 登朋[/url] ([url=m ... -
java.sql.SQLException: ORA-00933: SQL command not properly ended
2010-10-08 19:16 2297java.sql.SQLException: ORA-0093 ... -
Oracle数据显示--横表转纵表
2010-10-06 11:42 11731.建表-- Create table create ta ... -
Oracle学习笔记
2010-07-28 00:30 8851、set linesize 100; 设置长度 2、se ... -
《oracle 9i从入门到精通读书笔记2》
2010-07-26 19:51 1207第二章:PL/SQL基础 2.1 PL/SQL程序结构 ... -
《Oracle9i PL/SQL 从入门到精通读书笔记1》
2010-07-26 19:51 1189Oracle9i PL/SQL 从入门到精通学习笔记 第一章: ... -
Oracle域用户安装
2010-07-05 19:43 1186问题:如果在域中安装Oracle 10G, 在DataB ... -
存储过程无法代替触发器的特殊情况
2010-07-03 13:30 1025在这里先解释一下推崇 ... -
informix的字符串类型详解(含与oracle的对比)
2010-07-03 13:29 1740lvarchar在9.4版本之后才可以用带指定长度的方式,如l ... -
oracle的字符串类型详解
2010-07-03 13:29 1674整理一下对于char,characte ... -
Oracle学习笔记
2010-07-01 20:29 7551、set linesize 100; 设置长度 2、se ... -
Oracle数据库函数(单行函数)
2010-07-01 20:28 905Oracle数据库函数(单行函数) Oracle中的函 ... -
oracle日期函数集锦
2010-07-01 20:26 774一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位, ... -
Oracle时间加减
2010-07-01 20:23 1085加法 select sysdate,add_months(s ... -
Oracle中数值的计算
2010-06-30 23:46 1130运算符 含义 · +(加) 加法 · ||(加) ... -
Oracle常见问题处理
2010-06-30 23:46 938一、Oracle的安装目录不能是中文,否则安装不成功。解决:O ... -
Oracle基础练习(三)
2010-06-30 23:45 10491、select 5/2,null*5 from dual, ... -
如何在Oracle中建表格时就指定主键和外键
2010-06-30 23:42 1510创建表的语法-创建表格语法:create table 表 ... -
Oracle触发器中when语句的用法
2010-06-30 23:41 1438案例:scott.emp表的销售员工资只能增加,不能减少 代 ...
相关推荐
使用 Spring JdbcTemplate 调用 Oracle 存储过程实现 CRUD 在本文中,我们将讨论如何使用 Spring JdbcTemplate 调用 Oracle 存储过程来实现 CRUD(Create、Read、Update、Delete)操作。我们将首先编写 Oracle 存储...
用 Java 调用 Oracle 存储过程时,需要使用 JDBC 驱动程序来连接 Oracle 数据库,然后使用 CallableStatement 对象来调用存储过程。 在存储过程中做简单动态查询 在存储过程中,做简单动态查询需要使用 EXECUTE ...
以上就是Java调用Oracle存储过程或函数的主要知识点,实践中要根据具体情况进行适当的调整和优化。在处理过程中,参考Oracle的JDBC文档和官方示例,以及Java API文档,将有助于理解和解决问题。
在实际的业务场景中,有时我们需要调用数据库中的存储过程来获取或处理数据,本篇将详细介绍如何在润乾报表中调用Oracle存储过程。 首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为...
本文将深入探讨如何在Spring Boot项目中整合MyBatis,实现调用Oracle存储过程并处理游标返回的数据。 首先,我们需要在Spring Boot项目中引入相关的依赖。在`pom.xml`文件中添加Oracle JDBC驱动(ojdbc66-oracle...
在给出的“简单的存储过程.txt”文件中,可能包含了一个示例存储过程的定义和如何通过JDBC调用它的Java代码。例如,一个存储过程可能用于插入数据: ```sql CREATE OR REPLACE PROCEDURE insert_user ( p_username...
3. Java调用Oracle存储过程:Java程序可以通过JDBC来调用Oracle存储过程,获取结果集。 4. Type类型:Type类型是Oracle中的一种数据类型,用于定义复杂数据结构。 5. PACKAGE和PROCEDURE:PACKAGE和PROCEDURE是...
以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...
本文主要介绍了Oracle存储过程的概念、创建和调用方法,以及如何使用DBLink实现跨库操作。存储过程提供了强大的数据库处理能力,而DBLink则使得不同数据库实例之间的交互变得更加方便和高效。掌握这些技术对于提高...
在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用Oracle存储过程是一个常见的需求,这不仅能够提升代码的执行效率,还能增强应用程序的安全性。本文将深入解析ibatis如何与Oracle数据库中的存储过程进行...
总结,通过Java调用Oracle存储过程,我们需要配置JDBC驱动,建立数据库连接,创建CallableStatement,设置参数,执行存储过程,并处理返回的结果。在这个例子中,我们展示了如何调用一个简单的存储过程并打印返回的...
JDBC存储过程的调用
在本场景中,我们讨论的是如何使用JDBC调用Oracle数据库中的存储过程。存储过程是一组预先编译的SQL语句,可以提高数据库操作的效率和安全性。 首先,我们需要了解如何创建Oracle存储过程。在示例中,我们看到了三...
本篇将深入探讨如何使用JDBC来调用Oracle的存储过程并处理返回值。 首先,了解存储过程的概念。存储过程是预编译的SQL语句集合,它们存储在数据库服务器中,可以接受参数,执行一系列操作,并可能返回结果。在...
以上就是使用JDBC调用Oracle存储过程进行增删改查的基本步骤和概念。实际应用中,可能需要处理异常、优化性能,以及根据具体需求调整代码结构。在开发时,确保遵循最佳实践,如使用连接池、预编译的...
总的来说,Java通过JDBC API调用Oracle存储过程涉及以下几个关键步骤:建立连接、定义存储过程调用字符串、设置参数、执行存储过程和处理结果。通过熟练掌握这些步骤,你可以轻松地在Java应用中集成和利用Oracle...
本示例展示了如何在JSP中调用Oracle存储过程。 首先,我们创建一个名为`p_test2`的Oracle存储过程。这个过程接收一个数值型参数`i`,并在表`t`中插入一行数据。存储过程的定义如下: ```sql CREATE OR REPLACE ...
以下是一个基本的步骤来调用Oracle存储过程: 1. **建立数据库连接**: 使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码来创建一个`Connection`对象。 ```java Connection conn = ...