Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)
前言
今天查询一个数据字段一直提示字符无效,明明在数据库表字段中是存在的;
查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号;
表名同理,我这里表名是大写,暂时不需要改。
搜到一个批量修改字段名为大写的存储过程,如下:
登陆到要修改的用户下,
执行:
begin forclin(SELECTtable_name,column_namefromuser_tab_columnsWHEREcolumn_name<>upper(column_name)andupper(column_name)notin('SIZE','CHECK'))loop begin executeimmediate'altertable'||cl.table_name||'renamecolumn"'||cl.column_name||'"to'||upper(cl.column_name); exception whenothersthen dbms_output.put_line(cl.table_name||'.'||cl.column_name||'已存在'); end; endloop; end;
即完成该用户下所有表字段名改为大写的过程。
附上批量修改表名为大写的存储过程,以备后用:
--oracle批量修改表名为大写(当前登录用户) begin forcin(selecttable_nametnfromuser_tableswheretable_name<>upper(table_name))loop begin executeimmediate'altertable"'||c.tn||'"renameto'||c.tn; exception whenothersthen dbms_output.put_line(c.tn||'已存在'); end; endloop; end;
再附字段类型批量修改(此时表内无内容):
DECLARE CURSORTEMPISSELECTTABLE_NAME,COLUMN_NAME,DATA_LENGTHFROMUSER_TAB_COLUMNSWHEREDATA_TYPE='NVARCHAR2'ANDROWNUM<100; STRVARCHAR2(100):=''; BEGIN FORSINTEMPLOOP STR:='ALTERTABLE'||S.TABLE_NAME||'MODIFY('||S.COLUMN_NAME||'VARCHAR2(200))'; DBMS_OUTPUT.PUT_LINE(STR); EXECUTEIMMEDIATESTR; ENDLOOP; END;
到此这篇关于Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)的文章就介绍到这了,更多相关Oracle批量将表字段名转换为大写内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。