oracle中表和列转大写

linux 上mysql区分大小写,mysql 数据同步到oracle之后也区分大小写(oracle默认自动转大写),现于oracle数据库中,把用户下所有表调成大写

bash 复制代码
BEGIN
    FOR c IN (SELECT table_name tn FROM user_tables WHERE table_name <> UPPER(table_name)) 
    LOOP
        BEGIN
            EXECUTE IMMEDIATE 'ALTER TABLE "' || c.tn || '" RENAME TO ' || UPPER(c.tn);
            DBMS_OUTPUT.PUT_LINE('表 "' || c.tn || '" 已重命名为 ' || UPPER(c.tn));
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('表 ' || c.tn || ' 重命名失败: ' || SQLERRM);
        END;
    END LOOP;
END;
/
bash 复制代码
-- 设置更大的缓冲区(1MB)
SET SERVEROUTPUT ON SIZE 1000000;

BEGIN
    FOR t IN (SELECT table_name tn FROM user_tables) 
    LOOP
        FOR c IN (SELECT column_name cn FROM user_tab_columns 
                  WHERE table_name = t.tn AND column_name <> UPPER(column_name)) 
        LOOP
            BEGIN
                EXECUTE IMMEDIATE 'ALTER TABLE "' || t.tn || '" RENAME COLUMN "' || c.cn || '" TO ' || UPPER(c.cn);
                -- 每成功10条输出一次,减少缓冲区压力
                -- 如果需要静默执行,可以直接注释掉DBMS_OUTPUT
                -- DBMS_OUTPUT.PUT_LINE('成功: ' || t.tn || '.' || c.cn || ' -> ' || UPPER(c.cn));
            EXCEPTION
                WHEN OTHERS THEN
                    DBMS_OUTPUT.PUT_LINE('失败: ' || t.tn || '.' || c.cn || ' - ' || SQLERRM);
            END;
        END LOOP;
    END LOOP;
    
    DBMS_OUTPUT.PUT_LINE('执行完成!');
END;
/
相关推荐
+VX:Fegn089542 分钟前
计算机毕业设计|基于springboot + vue外卖点餐系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
盟接之桥2 小时前
线束数字化--先进先出为什么总是停留在纸面上?
大数据·网络·数据库·人工智能·制造·ai编程
adinnet20263 小时前
预算管控:预算执行与偏差问数
大数据·数据库
Omics Pro4 小时前
Cell封面|衰老生物学开源AI工具包
数据库·人工智能·算法·机器学习·自然语言处理
IT枫斗者枫哥12 小时前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
Y0012 小时前
PostgreSQL 的锁:为什么你的 ALTER TABLE 会卡住,以及怎么查
数据库·postgresql
灰原喜欢柯南12 小时前
OceanBase 运维管理知识点——OCP 监控、诊断与变更控制
数据库·oceanbase
码农-00412 小时前
Springboot 集成 Ehcache操作数据库显示SQL语句设置
数据库·spring boot·sql
仍然.12 小时前
Redis---事务
数据库·redis
oradh12 小时前
Oracle 执行计划的阅读方法(二叉树结构来理解和阅读)
数据库·oracle·执行计划的阅读方法