
你拿着 Oracle 的脚本, 丢到 DB2 里面去跑。 自然是不通过的了。
首先, DB2 是可以支持 BEGIN END 这样的写法的。
例如:
db2 => TRUNCATE TABLE output_debug IMMEDIATE
DB20000I SQL 命令成功完成。
db2 => BEGIN \
db2 (cont) => DECLARE testvalue INT; \
db2 (cont) => SET testvalue = 0; \
db2 (cont) => MyLoop: LOOP \
db2 (cont) => SET testvalue = testvalue + 1; \
db2 (cont) => INSERT INTO output_debug VALUES( TO_CHAR(testvalue) ); \
db2 (cont) => IF testvalue >= 5 THEN \
db2 (cont) => LEAVE MyLoop; \
db2 (cont) => END IF; \
db2 (cont) => END LOOP; \
db2 (cont) => END
DB20000I SQL 命令成功完成。
db2 => select from output_debug
DATA
------------------------------------
1
2
3
4
5
5 条记录已选择。
然后,DB2 好像没 DBMS_OUTPUTput_line 这样的 方法。
DBMS_OUTPUTput_line 是 Oracle 特有的。
最后,
exception when others 这种, 是 Oracle 的异常处理代码。
DB2 的异常处理, 参考下面的例子:
TRUNCATE TABLE output_debug IMMEDIATE@
BEGIN
-- DB2 中,如果需要使用 sqlcode ,那么必须先 DECLARE 以后,才能使用。
DECLARE sqlcode INT;
P1: BEGIN ATOMIC
-- 定义错误处理
-- 如果发生错误,结束处理,并回滚前面做的处理。
DECLARE UNDO HANDLER
FOR
SQLEXCEPTION
BEGIN
-- 异常处理
INSERT INTO output_debug VALUES('出错啦!' || TO_CHAR(sqlcode));
END;
-- 先更新
UPDATE test_main SET value = 'Test3' WHERE id = 1;
-- 插入一行主键重复数据
INSERT INTO test_main VALUES(1, 'PK');
INSERT INTO output_debug VALUES('本语句不会执行到!');
END P1;
END
@
db2 => select from test_main WHERE id = 1@
ID VALUE
----------- ----------
1 Test2
1 条记录已选择。
db2 => select from output_debug@
DATA
----------------------------------------
出错啦!-803
运行db2cc,在控制中心中右击要修改的表,生成DDL,将该DDL中CREATE TABLE命令包括表名进行相应修改后,运行该命令创建符合需要的新表。 然后insert into newtable select from oldtable,如果可以兼容的话,否则你需要考虑怎么修改一下。
1第一步:进入DB2命令行模式,连接到需要导入信息的表所有在的数据库。 db2 connect to db_name user username using password
2第二步:输入导出命令。 db2 export to D:\blob_data\blob_tabletxt of del lobs to D:\blob_data lobfile lob_doc
常用数据库有mysql、oracle、sqlserver、sqlite等。
1、Oracle数据库
Oracle数据库管理系统是由甲骨文(Oracle)公司开发的,在数据库领域一直处于领先地位。目前,Oracle数据库覆盖了大、中、小型计算机等几十种计算机型,成为世界上使用最广泛的关系型数据管理系统(由二维表及其之间的关系组成的一个数据库)之一。
2、SQLServer数据库
SQLServer是由微软公司开发的一种关系型据库管理系统,它已广泛用于电子商务、银行、保险、电力等行业。SQLServer提供了对XML和Internet标准的支持,具有强大的、灵活的、基于Web的应用程序管理功能。
3、DB2数据库
DB2数据库是由IBM公司研制的一种关系型数据库管理系统,主要应用于OS/2、Windows等平台下,具有较好的可伸缩性,可支持从大型计算机到单用户环境。
4、MongoDB数据库
MongoDB是由10gen公司开发的一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似JSON的bjson格式,因此可以存储比较复杂的数据类型。
5、MySQL数据库
MySQL数据库管理系统是由瑞典的MySQLAB公司开发的,但是几经辗转,现在是Oracle产品。它是以“客户/服务器”模式实现的,是一个多用户、多线程的小型数据库服务器。而且MySQL是开源数据的,任何人都可以获得该数据库的源代码并修正MySQL的缺陷。
6、Sybase数据库
美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。
数据库有两种类型,分别是关系型数据库与非关系型数据库。
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等 *** 作。
关系型数据库主要有:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。
非关系型数据库主要有:
NoSql、Cloudant、MongoDb、redis、HBase等等。
扩展资料:
非关系型数据库的优势:
1、性能高:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
2、可扩展性好:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
1、可以复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2、事务支持良好:使得对于安全性能很高的数据访问要求得以实现。
参考资料来源:百度百科-数据库
不太明白 你为什么 确认是 number,而不是 number(p,s)
如果是 数据库表 的字段 的数据类型, 一般都要指定 p,s 的吧 (当然s=0)算特例。
说回你的问题: Number 声明一个浮点数 其精度为38
也就是说,你在db2中找到一个浮点数的数据类型,精度 38 的即可。参考下面2个类型:
单精度浮点数(Single-precision floating-point),REAL:单精度浮点数是实数的 32 位近似值。数字可以为零,或者在从
-3402E+38 到 -1175E-37 或从 1175E-37 到 3402E+38
的范围内。
双精度浮点数(Double-precision floating-point),DOUBLE,DOUBLE PRECISION 或
FLOAT:双精度浮点数是实数的 64 位近似值。数字可以为零,或者在从 -179769E+308 到 -2225E-307 或从 2225E-307 到
179769E+308 的范围内。
以上就是关于DB2数据库字段都是varchar类型的,我把这个语句放到SQL里执行,提示有一个error。请大侠帮忙看看 哪里错了全部的内容,包括:DB2数据库字段都是varchar类型的,我把这个语句放到SQL里执行,提示有一个error。请大侠帮忙看看 哪里错了、db2数据库中数字类型是用什么定义、db2数据库blob类型怎么查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)