- 浏览: 321634 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ayidaweiwei:
上面已经写得很清楚了,吧里data 里面的数据定义成一个Bea ...
json对象转换成复杂Bean(包括bean、list<Bean>、Object) -
chaohua2012:
你好,如果json是这种形式呢"type" ...
json对象转换成复杂Bean(包括bean、list<Bean>、Object) -
a6892509:
大神呀
Java异常处理心得 -
liubaolin123:
请问有源码么?
restlet2.0.6+spring3.2.2+mybatis3.2.3 集成 -
xiangqian0505:
xiangqian0505 写道duan_1991 写道文章不 ...
Java异常处理心得
项目进入开发阶段的时候,为了方便,一直使用 Oracle 数据库进行开发, 所以很多 sql 语句都是在 oracle 能正常创建的,后期由于项目中嵌入了 IBM 的产品及其他因素,所以不得不使用 db2 数据库,切换数据库过程中的区别还是有点大,如:创建表、视图、存储过程、 Ibatis 支持等等、、、,下面就总结一下我从 Oracle 数据库切换到 DB2 数据库碰到的一些问题及如何解决。
1. 创建表字段类型的区别
|
创建表区别基本上就这些了,创建表时根据区别修改一下字段类型基本上不会大的问题。
1. 创建视图区别
创建视图的时候不能使用 OR REPLACE ,不能这样使用排序语句
CREATE
VIEW VIEW_SSC AS
SELECT DATE_TIME FROM JBPM4_TASK TB ORDER BY TB. DATE DESC
2. 创建存储过程区别
a)
参数类型和参数名称的位置不同
db2
:
CREATE PROCEDURE PRO1 (IN OrgID int)
oracle
:
CREATE PROCEDURE PRO1 (OrgID IN int)
b)
同时作为输入输出参数的写法不同
db2
:
CREATE PROCEDURE PRO1 (INOUT OrgID int) INOUT
连着写
oracle
:
CREATE PROCEDURE PRO1 (OrgID IN OUT int) IN OUT
中间空格隔开,而且必须
IN
在
OUT
之前
c)
没有输入或输出参数时
db2
:
CREATE PROCEDURE PRO1 ()
oracle
:
CREATE PROCEDURE PRO1
不能有空的括号
d)
赋值语句写法不一样
db2: set var =..
oracle: var := ..
e) 异常处理不一样
f) CREATE PROCEDURE
db2 :
CREATE PROCEDURE SSCDBUSER.INDI_DEL_PRO
( IN IDPARA VARCHAR ( 32 ), OUT RETURNPARA INTEGER )
LANGUAGE SQL
DYNAMIC RESULT SETS 1
DETERMINISTIC
BEGIN
DECLARE COUNTID INTEGER ;
DECLARE APPLYNOD VARCHAR ( 20 );
DECLARE CATEGORYD VARCHAR ( 4 );
SELECT COUNT ( ID ) INTO COUNTID FROM VIEW_SSC_INDIVIDUALFORMLIST WHERE ID = IDPARA;
SET RETURNPARA = COUNTID;
SELECT APPLY_NO, CATEGORY INTO APPLYNOD, CATEGORYD FROM VIEW_SSC_INDIVIDUALFORMLIST WHERE ID = IDPARA;
IF CATEGORYD= '1001' THEN
DELETE FROM SSC_EVECT_LOAN_INFO WHERE ID = IDPARA;
ELSEIF CATEGORYD= '1002' THEN
DELETE FROM SSC_DAILY_LOAN_INFO WHERE ID = IDPARA;
DELETE FROM SSC_DAILY_LOAN_DETAIL_INFO WHERE ID = APPLYNOD;
ELSEIF CATEGORYD= '1003' THEN
DELETE FROM SSC_EVECT_EXPENSE_INFO WHERE ID = IDPARA;
DELETE FROM SSC_EVECT_EXPENSE_DETAIL_INFO WHERE ID = APPLYNOD;
ELSEIF CATEGORYD= '1004' THEN
DELETE FROM SSC_DAILY_EXPENSE_INFO WHERE ID = IDPARA;
DELETE FROM SSC_DAILY_EXPENSE_DETAIL_INFO WHERE ID = APPLYNOD;
END IF ;
END
oracle :
CREATE OR REPLACE PROCEDURE "INDI_DEL_PRO" ( IDPARA IN VIEW_SSC_INDIVIDUALFORMLIST.ID% TYPE , RETURNPARA OUT NUMBER )
AS
APPLYNO VIEW_SSC_INDIVIDUALFORMLIST.APPLY_NO% TYPE ;
CATEGORY VIEW_SSC_INDIVIDUALFORMLIST.CATEGORY% TYPE ;
BEGIN
SELECT COUNT (*) INTO RETURNPARA FROM VIEW_SSC_INDIVIDUALFORMLIST WHERE ID= IDPARA;
SELECT APPLY_NO, CATEGORY INTO APPLYNO, CATEGORY FROM VIEW_SSC_INDIVIDUALFORMLIST WHERE ID= IDPARA;
IF CATEGORY= '1001' THEN
DELETE FROM SSC_EVECT_LOAN_INFO WHERE ID= IDPARA;
ELSIF CATEGORY= '1002' THEN
DELETE FROM SSC_DAILY_LOAN_INFO WHERE ID= IDPARA;
DELETE FROM SSC_DAILY_LOAN_DETAIL_INFO WHERE ID= APPLYNO;
ELSIF CATEGORY= '1003' THEN
DELETE FROM SSC_EVECT_EXPENSE_INFO WHERE ID= IDPARA;
DELETE FROM SSC_EVECT_EXPENSE_DETAIL_INFO WHERE ID= APPLYNO;
ELSIF CATEGORY= '1004' THEN
DELETE FROM SSC_DAILY_EXPENSE_INFO WHERE ID= IDPARA;
DELETE FROM SSC_DAILY_EXPENSE_DETAIL_INFO WHERE ID= APPLYNO;
END IF ;
END ;
3. 如果工程是有用到 Ibatis , 那么 Ibatis 中 sql 语句写法也有些区别
a) Ibatis 支持 oracle 数据库 sql 中可以带 * 号查询, db2 不能使用 select * from tablename ;这是最主要的。
b) Ibatis 支持 oracle 空值插入、更新,但是如果是 db2 映射值传空的话要必须要加上对应的字段类型
如: # remark:VARCHAR#
remark 是属性值, VARCHAR 是数据库中对应的字段类型。
总结了一下,方便以后查阅,同时也希望对看到这篇博客的朋友一些帮助,因为最近在解决这些问题时也花了不少时间。
- 实践Oracle与DB2区别及问题解决.rar (44.5 KB)
- 下载次数: 1
发表评论
-
restlet2.0.6+spring3.2.2+mybatis3.2.3 集成
2013-12-27 15:55 16855基于上一篇博客http://wuxiangqian.ite ... -
Mybatis3.2使用心得 中文API
2013-12-10 17:41 38992最近写一个web服务接口,用到了MyBatis3.2,把我 ... -
Internet Explorer 已对此页面进行了修改,以帮助阻止跨站点脚本
2013-05-05 15:11 17599ie浏览器提示错误的原 ... -
Java异常处理心得
2012-12-27 10:26 13190项目是基于 ... -
IE文本框内容右对齐后光标消失
2012-12-20 16:42 1933<input type="text" ... -
Oracle删除视图中的数据
2012-11-15 17:36 4001CREATE OR REPLACE PROCEDURE &qu ... -
IMP数据时报20001错误
2012-10-21 16:12 1381IMP-00017: 由于 ORACLE 的 200 ... -
json对象转换成复杂Bean(包括bean、list<Bean>、Object)
2012-07-09 18:33 29622jsonWorkflowBean是json字符串 // ... -
ORACLE 根据用户ID取出组织下所有用户的信息
2012-06-09 22:49 1281--zl_t_project项目信息表 --bos_t_us ... -
json字符串转换成List<bean>
2012-06-05 14:52 1936String gra = JSONUtils.toJSON(g ... -
数据库字段存的是多个用户的ID,取出来是多个用户的姓名
2012-04-22 00:13 1551'990000000000000001,99000000000 ... -
MyEclipse自动生成注释文档
2012-04-06 11:54 1136在myeclipse中导入该附件 window—pre ... -
Java实现 SSL双向认证
2012-04-01 10:01 1255我们常见的SSL验证较多的只是验证我们的服务器是否是真实正确的 ... -
ORACLE 数据导出成文本
2012-03-14 10:32 1108spool on set echo off newpage ... -
JAVA 二级联动菜单
2012-03-12 13:45 2357<%@ page language="java ... -
ORACLE修改表列的值
2012-03-07 14:30 2075--fz_t_ref_card 表名 --bikepil ... -
列出某文件夹下的所有文件
2012-03-03 23:12 1038File f=new File("Derec ... -
java 数据库连接池的简单实现
2012-03-03 23:07 1476package com.wangjia.tools; ... -
webservices设置
2011-12-06 17:28 1123<?xml version="1.0&qu ... -
Oracle 基础语句 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数...)
2011-12-06 15:01 1083--【字符串函数】--字符串截取substr(字段名, ...
相关推荐
#### 二、Oracle与DB2的主要区别 1. **数据类型支持**: - Oracle提供了丰富的数据类型,包括BFILE、RAW等,而DB2则引入了XML数据类型的支持,使得存储和检索XML文档更为便捷。 2. **性能优化工具**: - Oracle...
Oracle和DB2是两大主流的关系型数据库管理系统,广泛应用于企业级的数据存储和处理。这篇文档对比了IBM DB2 Universal Database (UDB) V7.2和Oracle 9i的技术特性,帮助读者理解两者在2001年时的差异。 首先,IBM ...
- 迁移过程中的常见问题及解决方法。 ##### 6. **数据并发控制** - **重点**: 讨论 DB2 在处理高并发事务时的优势。 - **内容**: - 并发控制的基本原理。 - DB2 的锁定机制与隔离级别。 - 如何优化并发环境下...
- 记录配置过程中遇到的问题及解决方案,便于后续排查和优化。 #### 总结 通过上述步骤,我们能够成功建立db2与oracle之间的联合数据库。这一过程不仅增强了数据的互通性,还为数据管理和分析提供了更多可能性。...
标题“Oracle、DB2、SQL Server”提示我们讨论的是三个主要的关系型数据库管理系统(RDBMS):Oracle、IBM DB2以及Microsoft SQL Server。这些数据库系统在IT领域中广泛用于数据存储、管理和处理,尤其在企业级应用...
了解如何使用日志和跟踪来定位和解决问题,以及如何使用内置的诊断工具,如Oracle的SQL*Plus或DB2的db2pd,对于快速解决故障至关重要。 总之,Oracle和DB2数据库的学习是一个全面的过程,涵盖理论知识、编程语言、...
Oracle、DB2和Infor都是知名的数据库管理系统,它们在企业级应用中广泛使用,尤其在处理大量数据和高并发场景下表现出色。本压缩包文件包含了关于这些数据库的经典教材和培训资源,对于想要深入理解和提升DBA技能的...
DB2也拥有类似的工具,如DB2 Recovery Expert,但Oracle的工具在业界更为广泛使用,用户社区也更活跃,这意味着用户可以更容易地找到解决方案和最佳实践。 #### 三、平台支持与跨平台能力 Oracle和DB2都支持多种...
本教程涵盖了Oracle、DB2和SQL Server这三种主流的关系型数据库管理系统,旨在帮助读者从零开始掌握数据库性能优化的技术和原理。 Oracle数据库是全球广泛使用的大型企业级数据库系统,以其强大的功能和高度的可...
- **《leo:我与她(DB2)》**: 描述了作者与DB2之间的深厚情感以及如何通过DB2解决实际工作中的问题。 - **其他文章**: 还包括了多位作者关于DB2使用经历的文章,如《David:结缘》、《fcming915:我一步步的脚印...
SQLMONITOR是一款强大的数据库监控工具,它专门设计用于实时监控Oracle、MySQL和DB2数据库中正在执行的SQL语句。这个工具对于数据库管理员和开发人员来说极其重要,因为它可以帮助他们诊断性能问题,优化查询,以及...
4. 兼容性:3.2 - DB2 Oracle 兼容特性.pdf介绍了DB2如何在保持自身特色的同时,提供与Oracle数据库兼容的功能,便于迁移和集成。 5. 开发工具:3.9 - ProC, PHP, .Net, ODBC+JDBC.pdf讲解了不同开发语言(如ProC、...
6. Oracle对比:虽然本红皮书主要讨论IBM DB2,但提及Oracle表明它可能会对比两种数据库系统的优缺点,包括性能、易用性、成本和生态系统等方面,帮助读者选择最适合电信业务的数据库解决方案。 7. 数据安全与隐私...
首先,OGG_WinUnix_Rel_Notes_11.1.1.1.2.pdf文档很可能是Oracle GoldenGate在Windows和Unix平台上的发行说明,其中详细介绍了此版本的新特性、增强功能、已知问题以及解决方法。在阅读这份文档时,用户可以了解如何...
- **Adrian Neagu**:拥有超过十年的数据库管理经验,主要涉及IBM DB2及Oracle数据库。自2002年起开始接触IBM DB2,并获得了多项专业认证,包括IBM DB2 Certified Administrator(版本8.1.2和9)、Oracle Database ...
### IBM DB2 认证教程知识点解析 #### 一、概述 IBM DB2是一款由IBM公司开发的关系型...通过对这些知识点的学习,不仅可以帮助考生顺利通过认证考试,还能在实际工作中更好地运用DB2解决各种复杂的数据管理挑战。