数据库技巧-批量修改ORACLE数据库的字段类型
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:12951803
使用工具:
Navicat 11.2.7
1.新建过程函数
2.输入过程函数代码
这里的示例代码是将DATE类型的数据转换为TIMESTAMP类型。
注意:
t.OWNER和t.DATA_TYPE更换为所需类型;
sqlstr也是执行对应的替换类型。
代码:
CREATE OR REPLACE
PROCEDURE "modify" AS
cursor c1 is
select t.TABLE_NAME, t.COLUMN_NAME, t.DATA_LENGTH
from all_tab_columns t
where t.OWNER = 'AKJWD' and t.DATA_TYPE = 'DATE' and
t.TABLE_NAME in (select at.table_name from all_tables at);
pTABLE_NAME varchar2(100);
pCOLUMN_NAME varchar2(100);
sqlstr varchar2(200);
pDATA_LEN integer;
BEGIN
open c1;
fetch c1 into pTABLE_NAME, pCOLUMN_NAME, pDATA_LEN;
WHILE c1% FOUND LOOP
sqlstr := 'alter table ' || pTABLE_NAME || ' modify ' || pCOLUMN_NAME ||' TIMESTAMP';
dbms_output.put_line(sqlstr);
execute immediate sqlstr;
-- remove space at column start and end
--sqlstr := 'update ' || pTABLE_NAME || ' set ' || pCOLUMN_NAME ||'=trim(' || pCOLUMN_NAME || ')';
--dbms_output.put_line(sqlstr);
--execute immediate sqlstr;
fetch c1 into pTABLE_NAME, pCOLUMN_NAME, pDATA_LEN;
end LOOP;
commit;
close c1;
END;
觉得文章对你有帮助,可以用微信扫描二维码捐赠给博主,谢谢!
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:12951803