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;
/
相关推荐
布莱克60516 小时前
理解索引:从概念到实践
数据库·mysql
我不是疯子是傻子19 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
这个DBA有点耶20 小时前
数据库迁移怎么做到“零翻车“:金仓 KDMS/KDTS/KFS 工具链实测
数据库·架构·dba
2501_9378609420 小时前
MySQL联合查询(多表查询)
数据库·mysql
名字还没想好☜21 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
迷迭香yy21 小时前
行业板块轮动因子实战从板块资金到因子建模的本地化Python全流程
数据库·人工智能·python
SelectDB1 天前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB1 天前
网易 日志与时序数据分析:Apache Doris / SelectDB 的技术能力与实践
数据库
weixin_539446781 天前
Navicat Premium 17报缺少ODBC驱动
数据库
哦虎!1 天前
【数据库】事务
java·数据库·mysql