zoukankan      html  css  js  c++  java
  • oracle 中创建包和包体

    创建上下文

    create or replace context stud_security using hu.pkg_security accessed globally;

    -- 创建程序包

    create or replace package hu.pkg_security is

        procedure set_security(a_vcparameter varchar2,a_vcvalue varchar2);

        function studname

        return varchar2;

       end pkg_security;

    /

    -- 创建包体

    create or replace package body hu.pkg_security is

        procedure set_security(a_vcparameter varchar2,a_vcvalue varchar2)

        is

       begin

             dbms_session.set_context(namespace=>'STUD_SECURITY',

                  attribute=>a_vcparameter,value=>a_vcvalue);

       end set_security;

    function studname

    return varchar2

    is

    vcstudname varchar2(20):=null;

    begin

         select 姓名 into vcstudname from hu.学生基本信息

         where 学号=to_number(sys_context('stud_security','学号'));

    return vcstudname;

    end studname;

    end pkg_security;

    /

    -- 设置输出

    set serveroutput on

    -- 通过调用新包设置命名空间stud_security中学号的值,并查询出学生姓名

    declare

          lvc_学号 varchar2(20):=null;

          lvc_姓名 varchar2(8):=null;

       begin

          pkg_security.set_security('学号','222005389081084');

          begin

            select sys_context('stud_security','学号') into lvc_学号 from dual;

          end;

          dbms_output.put_line('value for stud_security.学号 via userenv call is:' ||lvc_学号);

          lvc_姓名:=pkg_security.studname;

          dbms_output.put_line('student name:'|| lvc_姓名);

    end;

    /

    1.create or replace procedure alter_constraints(para_alter in varchar2) is

    v_cursorid integer;

    v_strcon varchar2(300);

    v_strtri varchar2(300);

    v_fknum number:=0;

    v_trinum number:=0;

    v_sqlerrm varchar2(600);

    cursor c_con is

        select * from user_constraints where constraint_type='R';

    r_con c_con% rowtype;

    cursor c_trigger is

        select trigger_name,status from user_triggers;

    notfound boolean;

    begin

        dbms_output.put_line('begin time:'||to_char(sysdate));

        if(upper(para_alter)='DISABLE' or upper(para_alter)='ENABLE') then

           open c_con;

           v_cursorid:=dbms_sql.open_cursor;

           loop

             fetch c_con into r_con;

             notfound:=c_con% notfound;

             exit when notfound;

             begin

               if(upper(para_alter)='DISABLE' and r_con.status='ENABLED' or

                   upper(para_alter)='ENABLE' and r_con.status='DISABLED') then

                 v_strcon:='alter table '||r_con.owner||'.'||r_con.table_name||' '||

                   upper(para_alter)||' constraint '||r_con.constraint_name;

                 dbms_sql.parse(v_cursorid,v_strcon,dbms_sql.v7);

                 v_fknum:=v_fknum+1;

              end if;

            exception

            when others then

              v_sqlerrm:=substr(sqlerrm,1,600);

              dbms_output.put_line('error:'||' '||v_sqlerrm);

            end;

          end loop;

          close c_con;

          dbms_output.put_line('===外键被'||para_alter||',总数'||to_char(v_fknum)||'===');

          for t_trigger in c_trigger loop

          begin

            if(upper(para_alter)='DISABLE' and t_trigger.status='ENABLED' or

                upper(para_alter)='ENABLE' and t_trigger.status='DISABLED') then

               v_strtri:='alter trigger '||t_trigger.trigger_name||' '||upper(para_alter);

            dbms_sql.parse(v_cursorid,v_strtri,dbms_sql.v7);

            v_trinum:=v_trinum+1;

            end if;

          exception

          when others then

              v_sqlerrm:=substr(sqlerrm,1,600);

              dbms_output.put_line('error:'||' '||v_sqlerrm);

          end;

          end loop;

          dbms_output.put_line('===触发器被'||para_alter||',总数'||to_char(v_trinum)||'===');

          dbms_sql.close_cursor(v_cursorid);

        else

          dbms_output.put_line('error:输入参数不正确,参数应为enable或disable!');

        end if;

        dbms_output.put_line('end time:'||to_char(sysdate));

    end alter_constraints;

  • 相关阅读:
    数据库-第十章 数据库恢复技术-10.5 恢复策略
    数据库-第十章 数据库恢复技术-10.4 恢复的实现技术
    数据库-第十章 数据库恢复技术-10.3 故障的种类
    数据库-第十章 数据库恢复技术-10.2 数据库恢复概述
    数据库-第十章 数据库恢复技术-10.1 事务的基本概念
    数据库-第九章 关系查询处理和查询优化-9.4 物理优化
    数据库-第九章 关系查询处理和查询优化-9.3 代数优化
    数据库-第九章 关系查询处理和查询优化-9.2 关系数据库系统的查询优化
    数据库-第九章 关系查询处理和查询优化-9.1 关系数据库系统的查询处理
    编译原理-第五章 语法制导翻译-5.2 语法制导翻译的应用
  • 原文地址:https://www.cnblogs.com/moonfans/p/2618885.html
Copyright © 2011-2022 走看看