149.Oracle数据库SQL开发之 大对象——理解LONG和LONG RAW类型
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50185841
LOB现在是大块数据的首选存储类型。
但是可能还会遇到下列类型的数据库:
l LONG用于存储最多2GB的字符数据
l LONG RAW用于存储最多2GB的二进制数据
l RAW用于存储最多4KB的二进制数据。
1. 示例表
CREATE TABLE long_content (
id INTEGER PRIMARY KEY,
long_columnLONG NOT NULL
);
CREATE TABLE long_raw_content (
id INTEGER PRIMARY KEY,
long_raw_column LONG RAW NOT NULL
);
2. 添加数据
INSERT INTO long_content (
id,long_column
) VALUES (
1, 'Creeps inthis petty pace'
);
INSERT INTO long_content (
id,long_column
) VALUES (
2, ' from dayto day'
);
INSERT INTO long_raw_content (
id,long_raw_column
) VALUES (
1,'100111010101011111'
);
INSERT INTO long_raw_content (
id,long_raw_column
) VALUES (
2,'A0FFB71CF90DE'
);
3. 将LONG和LONG RAW列转换为LOB
使用TO_LOB函数,可以将LONG转换为CLOB。
先创表如下:
CREATE TABLE clob_content (
id INTEGER PRIMARY KEY,
clob_columnCLOB NOT NULL
);
CREATE TABLE long_content (
id INTEGER PRIMARY KEY,
long_columnLONG NOT NULL
);
INSERT INTO long_content (
id,long_column
) VALUES (
1, 'Creeps inthis petty pace'
);
INSERT INTO long_content (
id,long_column
) VALUES (
2, ' from dayto day'
);
然后执行如下:
collection_user@PDB1> insert into clob_content select10+id,to_lob(long_column) from long_content;
2 rows created.
CREATE TABLE long_raw_content (
id INTEGER PRIMARY KEY,
long_raw_column LONG RAW NOT NULL
);
INSERT INTO long_raw_content (
id,long_raw_column
) VALUES (
1,'100111010101011111'
);
INSERT INTO long_raw_content (
id,long_raw_column
) VALUES (
2,'A0FFB71CF90DE'
);
CREATE TABLE blob_content (
id INTEGER PRIMARY KEY,
blob_columnBLOB NOT NULL
);
然后执行如下:
collection_user@PDB1> insert into blob_contentselect 10+id,to_lob(long_raw_column) from long_raw_content;
2 rows created.
使用ALTER TABLE语句直接转换LONG和LONG RAW列。
如下:
collection_user@PDB1> ALTER TABLE long_contentmodify (long_column CLOB);
Table altered.
collection_user@PDB1> alter table long_raw_contentmodify (long_raw_column blob);
Table altered.
将LONG和LONG RAW列转换为LOB之后,可以使用PL/SQL方法来访问LOB。
不应该修改目前被产品应用程序使用的表。