<input id="0qass"><u id="0qass"></u></input>
  • <input id="0qass"><u id="0qass"></u></input>
  • <menu id="0qass"><u id="0qass"></u></menu>

    oracle 字段全大寫,Oracle批量將表中字段名全轉換為大寫代碼示例

    本篇文章小編給大家分享一下Oracle批量將表中字段名全轉換為大寫代碼示例,文章代碼介紹的很詳細,小編覺得挺不錯的,現在分享給大家供大家參考,有需要的小伙伴們可以來看看。

    前言

    查詢一個數據字段一直提示字符無效,明明在數據庫表字段中是存在的;

    查詢后得知,數據庫表字段為小寫時,查詢需要將字段名小寫并加上雙引號;

    表名同理,這里表名是大寫,暫時不需要改。

    搜到一個批量修改字段名為大寫的存儲過程,如下:

    登陸到要修改的用戶下,

    執行:

    begin

    for cl in (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upper(column_name) not in('SIZE','CHECK')) loop

    begin

    execute immediate 'alter table '||cl.table_name||' rename column "'|| cl.column_name ||'" to '||upper(cl.column_name);

    exception

    when others then

    dbms_output.put_line(cl.table_name||'.'||cl.column_name||'已存在');

    end;

    end loop;

    end;

    即完成該用戶下所有表字段名改為大寫的過程。

    附上批量修改表名為大寫的存儲過程,以備后用:

    -- oracle 批量修改表名為大寫(當前登錄用戶)

    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 '||c.tn;

    exception

    when others then

    dbms_output.put_line(c.tn||'已存在');

    end;

    end loop;

    end;

    再附 字段類型批量修改(此時表內無內容):

    DECLARE

    CURSOR TEMP IS SELECT TABLE_NAME,COLUMN_NAME,DATA_LENGTH FROM USER_TAB_COLUMNS WHERE DATA_TYPE = 'NVARCHAR2' AND ROWNUM < 100;

    STR VARCHAR2(100) := '';

    BEGIN

    FOR S IN TEMP LOOP

    STR := 'ALTER TABLE '||S.TABLE_NAME||' MODIFY('||S.COLUMN_NAME||' VARCHAR2(200))';

    DBMS_OUTPUT.PUT_LINE(STR);

    EXECUTE IMMEDIATE STR ;

    END LOOP;

    END;

    • 0
      點贊
    • 0
      評論
    • 0
      收藏
    • 一鍵三連
      一鍵三連
    • 掃一掃,分享海報

    表情包
    插入表情
    評論將由博主篩選后顯示,對所有人可見 | 還能輸入1000個字符
    ??2021 CSDN 皮膚主題: 1024 設計師:白松林 返回首頁
    實付
    使用余額支付
    點擊重新獲取
    掃碼支付
    錢包余額 0

    抵扣說明:

    1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
    2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

    余額充值
    多乐彩