数据库中所有 narchar2字段怎样都改byte 为char 数据库中所有 narchar2字段怎样都改byte 为char 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写存储过程:--1: 用下面语句找到所有的VARCHAR2字段并用一个CURSOR储存:SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE DATA_TYPE = UPPER('VARCHAR2');--2: 遍历CURSOR循环动态执行ALTER COLUMN类型语句:EXECUTE IMMEDIATE 'ALTER TABLE '||CURSOR.OWNER||'.'||CURSOR.TABLE_NAME||' MODIFY ('||CURSOR.COLUMN_NAME||' CHAR('||CURSOR.DATA_LENGTH||'))'; 按用户修改数据类型,如修改SCOTT用户的SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' MODIFY ('||COLUMN_NAME||' CHAR('||DATA_LENGTH||'));' colFROM all_tab_columnsWHERE owner='SCOTT' AND data_type=upper('VARCHAR2');查询后:----------------------------------------------------ALTER TABLE SCOTT.BONUS MODIFY (ENAME CHAR(10));ALTER TABLE SCOTT.BONUS MODIFY (JOB CHAR(9));ALTER TABLE SCOTT.DEPT MODIFY (DNAME CHAR(14));ALTER TABLE SCOTT.DEPT MODIFY (LOC CHAR(13));ALTER TABLE SCOTT.EMP MODIFY (ENAME CHAR(10));ALTER TABLE SCOTT.EMP MODIFY (JOB CHAR(9));再把上面的脚本运行一下就可以了 我理解,楼主是想要这样的sql:alter table scott.bonus modify(ename varchar2(10 char)); 而oracle默认是:varchar2(10 byte); 大家都顶你那给分了昨天已经搞定 笨办法把建表脚本给改了哈然后先drop掉了表再重新建立了哈 sql/plus用sys as sysdba一登录完成就自动关闭窗口! Oracle求一简单过程 查询ORACLE的CPU占用率、内存的使用量 【求助】关于Oracle这种需求的查询语句不清楚怎么写 存储过程执行问题 在PRO*C中如何执行*.sql文件,在线等待。。。 number字段为何查不出来 请大家帮帮忙! 文档管理 shell脚本定时清除归档日志,急急急急急急。 兄弟们帮忙,dataguard的问题 情人节...加班中...散分!!!
--1: 用下面语句找到所有的VARCHAR2字段并用一个CURSOR储存:
SELECT OWNER, TABLE_NAME, COLUMN_NAME, DATA_LENGTH
FROM ALL_TAB_COLUMNS
WHERE DATA_TYPE = UPPER('VARCHAR2');--2: 遍历CURSOR循环动态执行ALTER COLUMN类型语句:
EXECUTE IMMEDIATE 'ALTER TABLE '||CURSOR.OWNER||'.'||CURSOR.TABLE_NAME||' MODIFY ('||CURSOR.COLUMN_NAME||' CHAR('||CURSOR.DATA_LENGTH||'))';
DATA_LENGTH||'));' col
FROM all_tab_columns
WHERE owner='SCOTT' AND data_type=upper('VARCHAR2');
查询后:
----------------------------------------------------
ALTER TABLE SCOTT.BONUS MODIFY (ENAME CHAR(10));
ALTER TABLE SCOTT.BONUS MODIFY (JOB CHAR(9));
ALTER TABLE SCOTT.DEPT MODIFY (DNAME CHAR(14));
ALTER TABLE SCOTT.DEPT MODIFY (LOC CHAR(13));
ALTER TABLE SCOTT.EMP MODIFY (ENAME CHAR(10));
ALTER TABLE SCOTT.EMP MODIFY (JOB CHAR(9));再把上面的脚本运行一下就可以了
我理解,楼主是想要这样的sql:
alter table scott.bonus modify(ename varchar2(10 char));
而oracle默认是:
varchar2(10 byte);
那给分了昨天已经搞定 笨办法
把建表脚本给改了哈然后先drop掉了表再重新建立了哈