zoukankan      html  css  js  c++  java
  • 存储过程

    CREATE OR REPLACE PROCEDURE restoreorg_disable_FK(ownerx  in varchar2, tblname in varchar2, n_enable in number)
    
    IS
    --类型定义
    cursor c_constraint
    is
    select y.CONSTRAINT_NAME, y.TABLE_NAME from dba_constraints y where y.R_CONSTRAINT_NAME =(
    select x.CONSTRAINT_NAME from dba_constraints x where x.TABLE_NAME = upper(tblname) and x.CONSTRAINT_TYPE = 'P'  and x.owner = upper(ownerx)) ;
    --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
    c_row c_constraint%rowtype;
    
    cursor d_constraint
    is
    select x.CONSTRAINT_NAME, x.TABLE_NAME from dba_constraints x where x.TABLE_NAME = upper(tblname) and x.CONSTRAINT_TYPE = 'P'  and x.owner = upper(ownerx);
    --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
    d_row d_constraint%rowtype;
    
    
    v_sql varchar2(3999);
    
    
    BEGIN
    DBMS_OUTPUT.ENABLE (buffer_size=>null);
    
    for c_row in c_constraint loop
    dbms_output.put_line(c_row.CONSTRAINT_NAME||'-'||c_row.TABLE_NAME);
    
    
    if n_enable = 1 then
    v_sql:= ' alter table '||ownerx||'.'||c_row.TABLE_NAME||' enable constraint '|| c_row.CONSTRAINT_NAME ;--打开外键
    dbms_output.put_line('打开外键'|| v_sql);
    execute immediate (v_sql);
    end if;
    
    if n_enable = 0 then
    v_sql:= ' alter table '||ownerx||'.'||c_row.TABLE_NAME||' drop  constraint '|| c_row.CONSTRAINT_NAME ;--关掉外键
    dbms_output.put_line('关掉外键'|| v_sql);
    execute immediate (v_sql);
    
    end if;
    
    end loop;
    
    
    
    for d_row in d_constraint loop
    dbms_output.put_line(d_row.CONSTRAINT_NAME||'-'||d_row.TABLE_NAME);
    
    
    if n_enable = 1 then
    v_sql:= ' alter table '||ownerx||'.'||d_row.TABLE_NAME||' enable constraint '|| d_row.CONSTRAINT_NAME ;--打开外键
    dbms_output.put_line('打开外键'|| v_sql);
    execute immediate (v_sql);
    end if;
    
    if n_enable = 0 then
    v_sql:= ' alter table '||ownerx||'.'||d_row.TABLE_NAME||' drop  constraint '|| d_row.CONSTRAINT_NAME ;--关掉外键
    dbms_output.put_line('关掉外键'|| v_sql);
    execute immediate (v_sql);
    
    end if;
    
    end loop;
    
    
    
    END restoreorg_disable_FK;
     
    CREATE OR REPLACE PROCEDURE dropOrgTbl(ownerx in varchar2)
    IS
    -- declare fixed array
    TYPE arry_var IS VARRAY(30) OF VARCHAR2(32);
    tblnames arry_var;
    v_sql varchar2(3999);
    tblname varchar2(32);
    tblexist number;
    --tblexist1 number;
    --set serveroutput on size 10000000000;
    BEGIN
    DBMS_OUTPUT.ENABLE (buffer_size=>null);
    -- init array
    tblnames := arry_var(
    'org_department',
    'org_user',
    'org_group',
    'org_duty',
    'org_job',
    'org_department_principal',
    'org_dept_principal',
    'org_department_role',
    'org_department_user_job',
    'org_user_job',
    'org_user_leader',
    'org_user_privilege',
    'org_user_role',
    'org_job_leader',
    'org_user_property',
    'org_user_login_log',
    'org_job_function',
    'org_group_nested_group',
    'org_employee',
    'org_employee_job',
    'org_duty_agent',
    'org_department_function',
    'org_department_employee_job',
    'org_group_user',
    'org_group_member',
    'org_group_job',
    'org_group_duty',
    'org_group_department',
    'org_duty_role',
    'org_job_role');
    
    --dbms_output.put_line(tblname(1));
    --dbms_output.put_line(tblname(2));
    
    
    for i in 1..tblnames.count
    loop
    tblname := tblnames(i);
    
    
    select count(1) into tblexist from all_tables t where t.TABLE_NAME = upper(tblname) and  t.OWNER = upper(ownerx);
    
    
    if tblexist = 1 then
      restoreorg_disable_FK(upper(ownerx), tblname, 0);
      v_sql:= ' drop table '||upper(ownerx)||'.'||tblname;
      dbms_output.put_line(v_sql);
      execute immediate (v_sql);
    end if;
    
    if tblexist=0 then
    
    dbms_output.put_line(upper(ownerx)||'.'||tblname ||' 不存在');
    
    end if;
    
    
    -- || ' create table '||tblname(i)||'_bak as select * from '||tblname(i)||';';
    end loop;
    
    
    
    --select * from all_tables where owner = 'ADM_JYJ'
    
    
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line(sqlerrm);--显示异常信息
        dbms_output.put_line(dbms_utility.format_error_backtrace);
    
    END dropOrgTbl;
     
     
     
     
     
     
     
     
    create or replace procedure createTenantDbUser is
    cursor c_tenant is
      select t.jdbc_username, t.JDBC_PASSWORD from ADM_OA_03.MT_TENANT t where t.status = 1;
    c_row c_tenant%rowtype;
    userexist number;
    v_sql varchar2(3999);
    begin
    DBMS_OUTPUT.ENABLE (buffer_size=>null);
    dbms_output.put_line('-----------------');
    for c_row in c_tenant loop
    select count(1) into userexist from dba_users t where t .username = upper(c_row.jdbc_username);
    dbms_output.put_line('--------create---------' || c_row.jdbc_username);
    if userexist < 1 then
       v_sql:='create user '||  c_row.jdbc_username
                  || ' identified by '||  c_row.JDBC_PASSWORD
                   ||' default tablespace OA_CLOUD '
                   ||' temporary tablespace TEMP '
                   ||'  profile DEFAULT '
                   ||' quota unlimited on oa_cloud ';
       execute immediate (v_sql);
                   
               
       v_sql:=' grant connect to  '         ||c_row.jdbc_username;
        execute immediate (v_sql);
        v_sql:=           ' grant exp_full_database to   ' || c_row.jdbc_username;
         execute immediate (v_sql);
        v_sql:=          ' grant imp_full_database to '  ||c_row.jdbc_username;
         execute immediate (v_sql);
         v_sql:=          ' grant resource to  ' ||c_row.jdbc_username;
          execute immediate (v_sql);
         v_sql:=          ' grant debug connect session to ' ||c_row.jdbc_username;
          execute immediate (v_sql);
         v_sql:=        ' grant unlimited tablespace to '   ||c_row.jdbc_username;
      execute immediate (v_sql);
               
      dbms_output.put_line('----create user ok----' || c_row.jdbc_username);  
    end if;
    
    if userexist > 0 then
       dbms_output.put_line('----------' || c_row.jdbc_username || 'has exist');   
      end if;
    end loop;
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line(sqlerrm);--显示异常信息
        dbms_output.put_line(dbms_utility.format_error_backtrace);
    
    end createTenantDbUser;
     
     
     
     
     
    create or replace procedure  dropAllorgtbl is
    cursor c_tenant is
      select t.jdbc_username, t.JDBC_PASSWORD from ADM_OA_03.MT_TENANT t where t.status = 1 and  t.id not  in ('T024', 'T001', 'T008');
    c_row c_tenant%rowtype;
    begin
      for c_row in c_tenant loop
        droporgtbl(c_row.jdbc_username);
       end loop;
    end  dropAllorgtbl;
     
     
    create or replace procedure dropAllUser is
    cursor c_tenant is
    
      select t.jdbc_username, t.JDBC_PASSWORD from ADM_OA_03.MT_TENANT t where t.status = 1 and  t.id not  in ('T024', 'T001', 'T008');
    c_row c_tenant%rowtype;
    v_sql varchar2(3999);
    
    
    begin
      for c_row in c_tenant loop
        --droporgtbl(c_row.jdbc_username);
        v_sql :='drop user '||c_row.jdbc_username||' cascade';
         execute immediate (v_sql);
         dbms_output.put_line('----drop user ok----' || c_row.jdbc_username);
       end loop;
    end dropAllUser;
     
     
     
    create or replace procedure AssignWfPrivilege is
    cursor c_tenant is
      select t.jdbc_username, t.JDBC_PASSWORD from ADM_OA_03.MT_TENANT t where t.status = 1;
    c_row c_tenant%rowtype;
    
    v_sql varchar2(3999);
    
    begin
      for c_row in c_tenant loop
          v_sql:='grant select on ADM_OA_03.wf_gz_data_sync TO '|| c_row.jdbc_username;
           execute immediate (v_sql);
           v_sql:='grant update on ADM_OA_03.wf_gz_data_sync TO '|| c_row.jdbc_username;
            execute immediate (v_sql);
            v_sql:='grant delete on ADM_OA_03.wf_gz_data_sync TO '|| c_row.jdbc_username;
             execute immediate (v_sql);
             v_sql:='grant insert on ADM_OA_03.wf_gz_data_sync TO '|| c_row.jdbc_username;
              execute immediate (v_sql);
             
               v_sql:='grant select on ADM_OA_03.wf_gz_data_sync_his TO '|| c_row.jdbc_username;
           execute immediate (v_sql);
           v_sql:='grant update on ADM_OA_03.wf_gz_data_sync_his TO '|| c_row.jdbc_username;
            execute immediate (v_sql);
            v_sql:='grant delete on ADM_OA_03.wf_gz_data_sync_his TO '|| c_row.jdbc_username;
             execute immediate (v_sql);
             v_sql:='grant insert on ADM_OA_03.wf_gz_data_sync_his TO '|| c_row.jdbc_username;
              execute immediate (v_sql);
    end loop;
    end AssignWfPrivilege;
  • 相关阅读:
    Python自动化开发学习的第十一周----WEB基础(html+css)
    oracle中的rownum详解
    oracle常用函数
    oracle使用exp命令无法导出空表解决方法
    plsql批量执行多个sql脚本示例
    oracle删除表空间和用户
    oracle系统相关表
    SpringMVC常用注解
    RequestMapping注解
    利用plsql只导出某些表,或者视图,或者触发器等
  • 原文地址:https://www.cnblogs.com/silentjesse/p/4731825.html
Copyright © 2011-2022 走看看