oracle批量为表增删字段
发布时间:2020-12-12 15:19:14 所属栏目:百科 来源:网络整理
导读: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_ss
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;
删除字段类似操作 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |