• plsql programming 20 管理PL/SQL代码(个人感觉用不到)


    这一章的内容, 只完成了一部分, 剩下的用到再补充吧

    由于依赖关系, 而编译失败, 需要重新编译. ( 所谓依赖, 是指存储过程, 函数等在运行中调用的对象, 比如table 等, 比如你删除了过程中调用的table, 然后又创建了一个一模一样的, 这个过程就需要重新编译)

    alter package bookworm compile body reuse settings;

    alter procedure add_book compile reuse settings;

    1. 数据字典帮助

    USER_* : 查看当前连接模式所拥有的数据库对象的信息.

    ALL_* : 当前连接模式能够访问的数据库对象的信息(可能是因为当前模式拥有这些对象, 也可能是因为当前模式已经被授予访问这些对象), 通常这类视图和对应的USER视图具有相同的列, 不过ALL 视图中会多出一个OWNER列.

    DBA_* : 这个视图显示的是全部(不包括SYS拥有的)数据库对象的信息, 这类视图通常和对应的ALL视图具有相同的列.

    USER_ARGUMENTS : 当前模式所拥有的全部过程和函数的参数信息.

    USER_DEPENDENCIES: 当前模式的对象互相依赖关系, oracle 主要通过这个视图标识对象的无效状态.

    USER_ERORRS : 当前模式拥有的对象(包括触发器)的编译错误. SQL*PLUS 的 show errors 命令访问的就是这个视图.

    USER_IDENTIFIERS(oracle11g 之后引入): 强大的代码分析工具

    USER_OBJECTS : 这个视图显示我们拥有的对象.

    USER_OBJECT_SIZE : 对象的大小, 事实上, 这个视图显示的是源代码, 解析后的代码以及编译后的代码大小.

    USER_PLSQL_OBJECT_SETTINGS(oracle10g 之后引入): 记录的是PL/SQL对象的可以通过ALTER 以及SET DDL 命名修改的属性信息.

    USER_PROCEDURES : 这个视图显示的是存储程序的信息.

    USER_SOURCE : 我们所拥有对象的源代码

    USER_STORED_SETTINGS: PL/SQL 编译器标志, 通过这些视图可以发现哪些程序是通过原生编译的.

    USER_TRIGGERS 及 USER_TRIG_COLUMNS : 我们所拥有的数据库触发器.

    例如:

       1:  select object_type, object_name, status
       2:    from user_objects
       3:   where object_type in (
       4:      'PACKAGE', 'PACKAGE BODY', 'FUNCTION', 'PROCEDURE'
       5:      'TYPE', 'TYPE BODY', 'TRIGGER')
       6:   order by object_type, status, object_name

    另外 user_source 这个字典也非常有用, 例如:

    image

       1:  create or replace procedure progwith(str in varchar2)
       2:  is
       3:      type info_rt is record(
       4:          name    user_source.name%type,
       5:          text    user_source.text%type
       6:      );
       7:      type info_aat is table of info_rt
       8:          index by pls_integer;
       9:          
      10:      info_aa    info_aat;
      11:  begin
      12:      select     name || '-' || line,
      13:              text
      14:              BULK COLLECT INTO info_aa
      15:        from  user_source
      16:       where  upper(text) LIKE '%' || UPPER(str) || '%'
      17:         and  NAME <> 'VALSTD'
      18:         and  NAME <> 'ERRNUMS';
      19:      
      20:      disp_header('Checking for presence of "' || str || '"');
      21:      
      22:      for indx in info_aa first .. info_aa.last
      23:      loop
      24:          pl(info_aa(indx).name, info_aa(indx).text);
      25:      end loop;
      26:  end progwith;

    一旦这个包编译成功, 我们就可以检查如下: exec valstd.progwith(‘-20’)

    image

    PL/SQL 程序调试

    PL/SQL 自动测试

    image

    image

    image

    image

    image

    image

    跟踪测试

    image

    image

    image

    image

    image

    image

    image

    image

    image

    PL/SQL 程序的调试

    image

    image

    image

    image

    image

    休息一下, 寻求帮助, 有的时候的确休息一下, 再考虑会有不一样的天空.

    image

  • 相关阅读:
    【hdu6035】 Colorful Tree dfs序
    【GDOI2018模拟8】 数学竞赛 三角函数性质+记忆化搜索
    【BZOJ4184】shallot 线性基
    失分统计#1
    【learning】微信跳一跳辅助c++详解 轻松上万 【下】
    【2018北京集训十二】 coin 矩阵快速幂
    【learning】微信跳一跳辅助c++详解 轻松上万 【上】
    【2018北京集训6】Lcm DFT&FWT
    【BZOJ3143】【HNOI2013】游走 高斯消元
    【bzoj1855】 [Scoi2010]股票交易 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3558893.html
Copyright © 2020-2023  润新知