アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブルの列の定義をvarchar(250)⇒varchar(500)に変更するのはALTERで変更してやればいいと思うんですが例えば1つのテーブルで上記のような列定義変更を膨大な数行う必要がある場合効率のよい方法ないでしょうか?

A 回答 (3件)

1)多数の表の特定の列名を対象にALTER文をつくる


select 'ALTER TABLE '|| table_name ||' MODIFY '|| column_name || ' VARCHAR2(500);' from user_tab_columns where column_name='BIKOU';

2)特定の表の多数の列を対象にALTER文をつくる
select 'ALTER TABLE '|| table_name ||' MODIFY '|| column_name || ' VARCHAR2(500);' from user_tab_columns where table_name='TB01' and data_length=250;

質問の内容からすると2)でしょうか。
    • good
    • 0

> 上記のような列定義変更を膨大な数行う必要がある場合効率のよい方法ないでしょうか?


「膨大」が何行なのか不明ですが、「一行一行を手打ちするのはイヤだ」と解釈します。
列名・列幅のみが変化するのであれば、EXCELの式を用いてAlter文を生成して、
テキストファイルに貼り付けてスクリプトファイルにして実行するのはいかが?
    • good
    • 0

> 1つのテーブルで上記のような列定義変更を膨大な数行う



元々の表定義がそもそも全面的に失敗だったということですよね。
正しい定義で新たに空っぽの表を作って旧表から新表に全行をコピーした方が効率は良いでしょう。
旧表がすでに他の表やプログラムと多数関連づけられているようですとケースバイケースだと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!