【发布时间】:2020-02-21 12:17:38
【问题描述】:
我的任务是为我的项目经理提供开发/测试估算。我们正在将我们的 Oracle12c 数据库从 WE8MSWIN1252 字符集转换为 utf-8 字符。
我的任务是对以下方面的发展变化进行估计。
- 将数据类型从 Byte 切换到 Char(即 VARCHAR2(10 byte) 到 VARCHAR2(10 char) )
- 更改代码,其中 Length 需要替换为 lengthb
我的问题。
- 我是否只需要担心将数据库表列从字节更改为字符?还是我可能需要查看数据库中的其他对象?
- Length to Lengthb 是我需要查看的唯一 Pl/SQL 函数吗?
- 作为开发人员,我还有其他需要注意的方面吗(例如,我们有 Oracle 表单/报告)?
- 我注意到下面的代码可以更改 user_tab_columns 中的所有表列,我是否需要为其他对象类型和以下查询未获取的对象运行此代码。
BEGIN FOR X IN (SELECT C.TABLE_NAME, C.COLUMN_NAME, C.DATA_TYPE, C.DATA_LENGTH FROM USER_TAB_COLUMNS C WHERE DATA_TYPE LIKE 'VARCHAR%' AND CHAR_USED = 'B' AND NOT EXISTS (SELECT 1 FROM USER_VIEWS V WHERE V.VIEW_NAME = C.TABLE_NAME)) LOOP EXECUTE IMMEDIATE('ALTER TABLE '||X.TABLE_NAME||' MODIFY '||X.COLUMN_NAME||' '||X.DATA_TYPE||'('||X.DATA_LENGTH||' CHAR)'); END LOOP; END;
提前谢谢各位。
【问题讨论】:
标签: oracle plsql utf-8 character-encoding oracle12c