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;
/
相关推荐
Nontee1 天前
新手数据库进阶:一条UPDATE语句的“奇妙漂流”
数据库
赵渝强老师1 天前
【赵渝强老师】openGauss的数据库
数据库·opengauss·国产数据库·高斯数据库
HackTwoHub1 天前
Sqli-Scanner SQL注入SKILL自动化挖掘SQL注入,零依赖自动化SQL注入挖掘,赏金猎人
数据库·人工智能·sql·web安全·网络安全·自动化·系统安全
l1t1 天前
DuckDB对group by cube / rollup / groupping sets查询的优化
数据库·duckdb
Database_Cool_1 天前
什么是湖仓一体?和数据仓库的本质区别(附 AnalyticDB MySQL 湖仓一体方案)
数据库·数据仓库·mysql
l1t1 天前
DeepSeek总结的MariaDB 的 DuckDB 存储引擎
数据库·mariadb
tiancaijiben1 天前
阿里云VMware服务完全对接指南:从环境准备到混合云生产级应用
数据库
Curvatureflight1 天前
MySQL 深分页越来越慢?从 LIMIT OFFSET 改成游标分页
数据库·oracle
XZ-0700011 天前
MySQL事务
数据库·mysql·oracle
tiancaijiben1 天前
阿里云函数计算FC如何实现网站的定时任务与自动化
数据库·oracle·dba