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;
/
相关推荐
不像程序员的程序媛6 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Jane Chiu7 小时前
Oracle DBMS_REDEFINITION(在线重定义)
数据库·oracle·分区表
全栈前端老曹7 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
怕孤单的草丛7 小时前
缓存管理面临的主要问题
java·数据库·缓存
我会尽全力 乐观而坚强8 小时前
MySQL零基础入门(二)
数据库·mysql·adb
kali-Myon9 小时前
某校园门禁系统高危 SQL 注入漏洞挖掘复盘
数据库·sql·安全·web安全
程序员在囧途10 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
龙石数据11 小时前
MySQL 全量同步到 Hive 怎么做?三步配置教程
数据库·hive·mysql·数据治理·数据中台
程序员在囧途11 小时前
likeadmin-api API 算力超市怎么做供应商切换?统一鉴权、task_id 和 callback_url 才能稳交付
java·服务器·数据库·开放api·likeadmin-api·api算力超市