У меня есть таблица, в которой более 300 столбцов. Теперь я хочу удалить некоторые определенные столбцы набора, начиная с некоторой строки префикса. Поскольку даже этих столбцов больше 100, поэтому я ищу скрипт, который может удалить все такие столбцы, соответствующие их строке суффикса.
например У меня есть столбцы ниже в таблице - solExtMenber, solExtEvent, solExtTime, ID, name, soleExtTime
.
Я хочу удалить все столбцы, начинающиеся с solExt
.
Запросите USER_TAB_COLUMNS
и создайте скрипт, который будет использовать динамический SQL и выполнять свою работу. Например:
SQL> CREATE TABLE test
2 (
3 id NUMBER,
4 solextmember NUMBER,
5 solextevent NUMBER,
6 name VARCHAR2 (10)
7 );
Table created.
SQL> BEGIN
2 FOR cur_r
3 IN (SELECT 'alter table test drop column ' || column_name command
4 FROM user_tab_columns
5 WHERE table_name = 'TEST'
6 AND column_name LIKE 'SOLEXT%')
7 LOOP
8 EXECUTE IMMEDIATE cur_r.command;
9 END LOOP;
10 END;
11 /
PL/SQL procedure successfully completed.
SQL> DESC test;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
SQL>
Однако, поскольку вы использовали «удалить» и «удалить», а также «префикс» и «суффикс», этот код, возможно, потребуется скорректировать, как только вы примете решение.
Спасибо Littlefoot .. Это то, что я искал.