ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 792|回复: 0

[笔记] ORACLE/达梦数据库怎么将varchar2类型转化为LOB类型

[复制链接]
求职 : 数据库管理员
认证徽章
论坛徽章:
1
目光如炬
日期:2017-02-19 22:00:00
发表于 2017-11-3 09:51 | 显示全部楼层 |阅读模式
对于IT行业,当遇到不懂的问题的时候该怎么样?不懂就问,还是不懂就百度?我的想法是不懂就百度,并且综合资料兼实践!而不是一遇到问题就问别人喔!来吧!以下实践下一个非常简单的东西。就是如何将varchar2类型转化为LOB类型。对于ORACLE数据库和达梦数据库都是通用的喔,其他数据库我还没有实践呢,见谅!!!

1、创建一个新的用户,名为test
SQL> create user test identified by test account unlock;

User created.
2、授权(达梦数据库不需要授权CONNECT)
SQL> grant connect to test;

Grant succeeded.

SQL> grant resource to test;

Grant succeeded.

SQL> grant dba to test;

Grant succeeded.

3、使用TEST用户进行测试。
SQL> conn test/test
Connected.




====        无数据的情况下,ORA与DM通用!=====

1、创建一张test_clob表
SQL> create table test_clob (
id int,
name varchar2(100));  2    3  

Table created.

2、直接改列报错!
SQL> alter table test_clob modify name clob;
alter table test_clob modify name clob
                             *
ERROR at line 1:
ORA-22858: invalid alteration of datatype

3、增加name1列,类型为CLOB
SQL> alter table test_clob add name1 clob;

Table altered.

4、删掉原来的name列。
SQL> alter table test_clob drop column name;

Table altered.

5、将CLOB类型的name1列改为name名
SQL> alter table test_clob rename column name1 to name;

Table altered.

6、查看test_clob的表结构
SQL> desc test_clob
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                 NUMBER(38)
NAME                                               CLOB
                                              NUMBER(38)

---------------
---------------

=====   有数据的情况下,ORA与DM通用!        =====       
1、创建一张test_clob表
SQL> create table test_clob_data (
id int,
name varchar2(100));

2、插入数据
insert into test_clob_data values (1,'HAPPY');
insert into test_clob_data values (2,'HELLO');
insert into test_clob_data values (3,'TIME');
commit;

3、直接改列报错!
SQL> alter table test_clob_data modify name clob;
alter table test_clob_data modify name clob
                                  *
ERROR at line 1:
ORA-22858: invalid alteration of datatype

4、增加name1列,类型为CLOB
SQL> alter table test_clob_data add name1 clob;

Table altered.

5、将name列的值复制到name1列
SQL> update test_clob_data set name1=name;     --3条数据被更改。
SQL> commit;

6、删掉原来的name列
Commit complete.
SQL> alter table test_clob_data drop column name;

Table altered.

7、将CLOB类型的name1列改为name名
SQL> alter table test_clob_data rename column name1 to name;

Table altered.

8、查看test_clob_data的表结构
SQL> desc test_clob_data
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                 NUMBER(38)
NAME                                               CLOB
                                              NUMBER(38)
9、查看test_clob_data的数据
SQL> select * from test_clob_data;

        ID
----------
NAME
--------------------------------------------------------------------------------
         1
HAPPY

         2
HELLO

         3
TIME



最后,我请教下大家,请问有什么方式可以将varchar2直接转为为LOB类型,一步到位呢?没有数据的情况下,有数据的情况下,分别是怎么实现的呢?请大家赐教!





您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表