我是靠谱客的博主 自然小鸽子,最近开发中收集的这篇文章主要介绍Oracle数据库批量修改字段类型:NCLOB -> NVARCHAR(2000),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先从数据库查出所有NCLOB表和字段名称,然后进行SQL拼接

SELECT
*
FROM
User_Tab_Columns
WHERE
DATA_TYPE='NCLOB'
ORDER BY
TABLE_NAME;
SELECT
*
FROM
AD_APP_PARAM_copy1
WHERE
rownum <=10
--新增一个字段,类型为VARCHAR2 长度4000
ALTER TABLE
AD_PROGRAM ADD FILEDNAME_TMP NVARCHAR2(2000)
--将要改的字段类型Clob的列数据更新到新增的列
UPDATE
AD_PROGRAM
SET
FILEDNAME_TMP=SHORTCUTMENU;
--删除原Clob列
ALTER TABLE
AD_PROGRAM DROP column SHORTCUTMENU;
--将新增列名更改为原来的列名
ALTER TABLE
AD_PROGRAM RENAME column FILEDNAME_TMP TO SHORTCUTMENU;
SELECT
'alter table '|| TABLE_NAME|| ' add FILEDNAME_TMP NVARCHAR2(2000);update '|| TABLE_NAME ||
' set FILEDNAME_TMP='||COLUMN_NAME|| ';alter table '|| TABLE_NAME ||' drop column '||
COLUMN_NAME||';alter table '|| TABLE_NAME ||' rename column FILEDNAME_TMP to '|| COLUMN_NAME||
';'
FROM
User_Tab_Columns
WHERE
DATA_TYPE='NCLOB'
OR
DATA_TYPE='CLOB'
ORDER BY
TABLE_NAME ;

拼接好的sql

ALTER TABLE
MD_DEPT ADD FILEDNAME_TMP NVARCHAR2(2000);
UPDATE
MD_DEPT
SET
FILEDNAME_TMP=REMARKS;
ALTER TABLE
MD_DEPT DROP column REMARKS;
ALTER TABLE
MD_DEPT RENAME column FILEDNAME_TMP TO REMARKS;

最后执行全部即可

例如NCHAR改为NVARCHAR2,例如NCHAR(2)改为NVARCHAR2(2)

select * from User_Tab_Columns where DATA_TYPE = 'NCHAR' and DATA_LENGTH !=2 order by TABLE_NAME ;
select
'alter table '||TABLE_NAME|| ' modify ('||COLUMN_NAME||' NVARCHAR2('||DATA_LENGTH/2||'));'
from User_Tab_Columns where DATA_TYPE = 'NCHAR' order by TABLE_NAME ;

最后

以上就是自然小鸽子为你收集整理的Oracle数据库批量修改字段类型:NCLOB -> NVARCHAR(2000)的全部内容,希望文章能够帮你解决Oracle数据库批量修改字段类型:NCLOB -> NVARCHAR(2000)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部