--step1 disable constraint
begin
for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name)
LOOP
begin
execute immediate 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
exception
when others then
dbms_output.put_line(i.table_name);
dbms_output.put_line(i.constraint_name);
end;
end loop;
end;
/ --step2: drop index
BEGIN
FOR ind IN
(SELECT ui.index_name FROM user_indexes ui, all_tables tab WHERE ui.TABLE_OWNER='xx' and tab.OWNER='xx' and ui.table_name=tab.table_name and INDEX_TYPE != 'LOB')
LOOP
BEGIN
execute immediate 'DROP INDEX '||ind.index_name;
exception
when others then
dbms_output.put_line(ind.index_name);
END;
END LOOP;
END;
/
COMMIT; --step3 update all coulmn
undefine schema_name;
declare
l_Err varchar2(200);
begin
for r in (select atc.table_name, atc.column_name, atc.data_length
from all_tab_columns atc, all_tables tab WHERE atc.owner=tab.OWNER and atc.table_name=tab.table_name
and atc.data_type = 'VARCHAR2'
and atc.char_used = 'B' --Indicates that the column uses BYTE length semantics (B) or CHAR length semantics (C)
-- and atc.table_name = 'INACTIVE_ACCOUNT' --TEST
and atc.owner = upper('&&schema_name'))
loop
begin
execute immediate 'alter table '|| upper('&&schema_name')
|| '.'
|| r.table_name
|| ' modify '
|| r.column_name
|| ' varchar2('
|| r.data_length
|| ' char)';
end;
commit;
end loop;
end;
/
COMMIT; --step4 create index
please refer in last part --step5 create index - run two times
begin
for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name)
LOOP
begin
execute immediate 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
exception
when others then
dbms_output.put_line(i.constraint_name);
end;
end loop;
end;
/
COMMIT;
begin
for i in (select uc.constraint_name, uc.table_name from user_constraints uc, all_tables tab where uc.OWNER='xx' and tab.OWNER='xx' and uc.table_name=tab.table_name)
LOOP
begin
execute immediate 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
exception
when others then
dbms_output.put_line(i.constraint_name);
end;
end loop;
end;
/
COMMIT;

sql for loop的更多相关文章

  1. Oracle PL/SQL之LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  2. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  3. [转载]Oracle PL/SQL之LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  4. SQL Server loop - how do I loop through a set of records

    SQL Server loop - how do I loop through a set of records By using T-SQL and cursors like this : DECL ...

  5. pl/sql declare loop if

    -- 1.判断表是否存在,如果存在则drop表 -- 2.创建表 -- 3.插入1W条数据 -- 4.每1K条commit一次 declare v_table ):='STUDENT'; --表名 v ...

  6. PL/SQL块loop..各种循环练习

    --利用loop输出1到100的值并求和 ---loop exit end loop set serveroutput on; declare v_i ; v_sum ; begin loop )th ...

  7. [转]Dynamic SQL & Stored Procedure Usage in T-SQL

    转自:http://www.sqlusa.com/bestpractices/training/scripts/dynamicsql/ Dynamic SQL & Stored Procedu ...

  8. pl/sql tutorial

    http://plsql-tutorial.com/plsql-procedures.htm What is PL/SQL? PL/SQL stands for Procedural Language ...

  9. SQL根据B表内容修改A表内容,查询表中重复记录,删除掉重复项只保留一条

    以下sql是a,b两张表通过关联条件id修改a表值,如果b表有重复数据记录,选第一条更新,红色条件为附加限制条件,具体视情况而定: UPDATE a SETname = b.fname,pwd = b ...

随机推荐

  1. 在一个div上增加遮罩

    有一个需求是给一个视频增加遮罩 我研究了下 抽象出来就是给一个div增加遮罩 原理是:最外层的div使用relative定位     然后里面放两个子div  一个是不被遮的  另一个是遮罩(用abs ...

  2. // 62.是否有利润奖--lrj private boolean isProfitsAward; // 63.利润奖--lrj_price private String profitsAward;

    // 62.是否有利润奖--lrj private boolean isProfitsAward; // 63.利润奖--lrj_price private String profitsAward; ...

  3. Bugku 杂项 这是一张单纯的图片

    这是一张单纯的图片 将图片用winhex打开 会发现在最后的部分有html实体编码 decode一下得到 key{you are right} 关于html实体编码 对于某些特殊字符如 < 与 ...

  4. JS占位符替换

    String.prototype.format = function() { if(arguments.length === 0) return this; var obj = arguments[0 ...

  5. 前端通过axios和FormData实现文件上传功能遇到的坑

    使用element-ui中的upload上传组件,前端上传数据参数已经传过去了,但是后端 (java) 接不到数据 (null) [解决方案] html部分: <el-button type=& ...

  6. datagrid选择一行

    onLoadSuccess:function(value, rec){ $("#sinopec_search_btn").linkbutton('enable'); var dat ...

  7. python 使用xlsxwriter的方法属性

    http://xlsxwriter.readthedocs.io/format.html

  8. 如何创建自定义的Resource实例

    由Resource的构造函数Resources(AssetManager assets, DisplayMetrics metrics, Configuration config)了解到,需要获取ap ...

  9. xpath使用技巧

    爬虫中我们对于元素的定位有多种方法,大致有: Beautifulsoup.Xpath和正则表达式三种方式 其中效率比较为: Beautifulsoup<Xpath<正则表达式 习惯了使用B ...

  10. postman使用动态token发post请求小结

    最近使用postman做接口测试,感觉挺好用的. 测试中,每次post请求都要携带一个token,token是通过get请求得来的,动态变化的,并且token有有效期的限制.为了避免重复获取token ...