如何批量修改Oracle表中的字段(被""引起来的)

辰爸 2011-07-07 03:01:52
转换过来的数据库表中字段名都添加了"",有什么办法批量转换吗?或者写一个函数,传递表名转换也可以,这里有一个,但是有的时候会报列名重复

declare
v_sql varchar2(1000);
cursor cur is select 'alter table tablename rename column "'||t1.COLUMN_NAME||'" to '||upper(t1.COLUMN_NAME) as sqlstr
from user_tab_columns t1
where table_name=upper('tablename')
and not exists (select 1 from user_tab_columns t2 where t2.COLUMN_NAME=upper(t1.COLUMN_NAME) );
begin
for rur in cur loop
v_sql := rur.sqlstr;
execute immediate v_sql;
end loop;
end;
/

...全文
231 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
辰爸 2011-07-15
  • 打赏
  • 举报
回复

速度来人啊!~
辰爸 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kerafan 的回复:]
SQL code

关注,字段名带有""是说这样:
create table test(
"DDD" number
);
[/Quote]
是从别的数据库转到Oracle中的,字段名被加上了“”,这样查询的时候必须区分大小写,所以只能手工alter table ** renaem column "ss" to ss这样修改,有没有更好的办法?
BenChiM888 2011-07-07
  • 打赏
  • 举报
回复
列名重复是因为带双引号的字段名称是区分大小写的,你去掉之后不区分大小写,有可能和现有列名重复。
这个除非你自己想好列名是什么,否则还真没有好办法。
老黎 2011-07-07
  • 打赏
  • 举报
回复

关注,字段名带有""是说这样:
create table test(
"DDD" number
);
秋雨飘落 2011-07-07
  • 打赏
  • 举报
回复
结帖率:100.71%

..........
tangren 2011-07-07
  • 打赏
  • 举报
回复
可能某种情况未考虑到,
如果有报错,可以查询具体的表的列情况来确定是何种原因。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧