oracle批量為表增刪字段

2021-07-27 17:58:50 字數 1763 閱讀 4531

create or  replace procedure add_column as

--declare在oracle中指代的是「塊」,用於處理一段業務邏輯的

--declare

--動態表表名字首  

tbl_name_prefix nvarchar2(255);

--表名  

tbl_name nvarchar2(255);

--欄位  

add_column_name nvarchar2(255) := 'code_ssqx';

--存放sql語句的字串  

sql_str nvarchar2(500);

--欄位是否已存在  

is_exist number := 0;

c_name number;

ret    number;

--記錄動態表的的數量  

mt_counter number := 0;

begin

for tbl_name_record in (select table_name

from user_tables

where table_name like 'zhzs_%') loop

mt_counter := mt_counter + 1;

dbms_output.put_line('tbl_name: ' || tbl_name_record.table_name);

-- oracle cols 查詢表字段型別及長度 function 

select count(column_name)

into is_exist

from cols

where table_name = upper(tbl_name_record.table_name)

and column_name = upper(add_column_name);

if (is_exist = 0) then

dbms_output.put_line('字段 [' || add_column_name || '] 在表' ||

tbl_name_record.table_name || '中不存在');

sql_str := 'alter table ' || tbl_name_record.table_name || ' add ' ||

add_column_name || ' varchar2(50) ';

dbms_output.put_line('新增列, 動態執行ddl語句: ' || sql_str);

---動態執行ddl語句  

--execute immediate sql_str;  

c_name := dbms_sql.open_cursor;

dbms_sql.parse(c_name, sql_str, dbms_sql.native);

ret := dbms_sql.execute(c_name);

dbms_sql.close_cursor(c_name);

else

dbms_output.put_line('字段 [' || add_column_name || '] 已經存在於表' ||

tbl_name_record.table_name || '中');

end if;

end loop;

dbms_output.put_line('共有: [' || mt_counter || '] 個動態表。');

end add_column;

刪除字段類似操作

Hive表 增改刪字段

基本語法 alter table name rename to new name alter table name add columns col spec col spec alter table name drop column column name alter table name chan...

Mysql 函式進行相似表的增刪欄位的操作

碰到分表的庫,裡面好多表都是分出來的,如cms news 1,cms news 2,cms news 3 反正就是好多好多 要同時給這麼多表增加乙個字段 city id。手動乙個表乙個表的增加,估計幾個百錶下來,必定會有出入的。找捷徑,用mysql的可編譯的函式 儲存過程 來寫一下。找出相似的表,取...

oracle 增刪表字段。增刪外來鍵。

增加表字段 如何用sql語句給表增加字段?alter table 表名 add 列名 varchar 20 not null 怎麼樣增加預設值為null,屬性為varchar,長度為20的字段?alter table 表名 add 列名 varchar 20 default null 刪除表字段 a...