加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;


删除字段类似操作

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读