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

由于依赖关系, 而编译失败, 需要重新编译. ( 所谓依赖, 是指存储过程, 函数等在运行中调用的对象, 比如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 这个字典也非常有用, 例如:

   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’)

PL/SQL 程序调试

PL/SQL 自动测试

跟踪测试

PL/SQL 程序的调试

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

plsql programming 20 管理PL/SQL代码(个人感觉用不到)的更多相关文章

  1. 将PL/SQL代码封装在机灵的包中

    将代码封装在机灵的包中 http://www.oracle.com/technetwork/issue-archive/2013/13-jan/o13plsql-1872456.html 绝大多数基于 ...

  2. 同样的一句SQL语句在pl/sql 代码块中count 没有数据,但是直接用SQl 执行却可以count 得到结果

    pl/sql 代码块: SELECT count(distinct t2.so_nbr) INTO v_count2 FROM KFGL_YW_STEP_qd t2 WHERE t2.partitio ...

  3. 使用PL/Scope分析PL/SQL代码

    使用PL/Scope分析你的PL/SQL代码 从11g開始Oracle引入了PL/Scope 用于编译器收集PL/SQL程序单元的全部标识符(变量名.常量名.程序名等). 收集到的信息可通过一系列静态 ...

  4. oracle 中使用 pl/sql代码块

    1.写匿名块,输入三角形三个表的长度.在控制台打印三角形的面积. declare -- (p=(a+b+c)/2) --声明三角形的面积 三条边 的 v_a number (10,2):=&n ...

  5. oracle中plsql练习题-----编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号

    一.思路:首先输出需要变量接收,需要声明变量,于是考虑什么变量类型比较合适,在这我用的是table类型,最后,查询出来,循环输出即可. 二.具体实现 -- 编写一个PL/SQL块,输出所有员工的员工姓 ...

  6. plsql programming 16 动态SQL和动态PLSQL

    动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL ...

  7. pl/sql programming 02 创建并运行plsql代码

    /* * chap 02 * ------------------------------------------------- */ create or replace function wordc ...

  8. PLSQL(PL/SQL)集成Team Foundation Server (TFS),实现数据库代码的版本管理

    PL/SQL是面向Oralcle数据库的集成开发环境,是众多Oracle数据库开发人员的主要工具.由于PL/SQL(百度百科)不仅是一种SQL语言,更是一种过程编程语言,在项目实施过程中,会积累大量除 ...

  9. PL/SQL 01 代码编写规则

    1.标识符命名规则当在 PL/SQL 中使用标识符定义变量.常量时,标识符名称必须以字符开始,并且长度不能超过 30 个字符.另外,为了提高程序的可读性,Oracle 建议用户按照以下规则定义各种标识 ...

随机推荐

  1. Why DNS Based Global Server Load Balancing (GSLB) Doesn’t Work

    Why DNS Based Global Server Load Balancing (GSLB) Doesn't Work    

  2. 误删除Ubuntu 14桌面文件夹“~/桌面”,如何恢复?

    一不小心把当前用户的桌面文件夹“/home/wenjianbao/桌面”删了,导致系统把“/home/wenjianbao”当成桌面文件夹.结果,桌面上全是乱七八糟的文件/文件夹. 查看了下网络资料, ...

  3. Linux 命令缩写部分解释

    转:http://blog.chinaunix.net/uid-28408358-id-3890783.html bin = BINaries  /dev = DEVices  /etc = ETCe ...

  4. 笔记:git基本操作

    原文: http://www.cnblogs.com/pingwen/p/8098035.html 1. 快速入门的基本概念 相比SVN,TFS等集中式的版本管理系统,GIT分布式管理最重要的理念是本 ...

  5. 一起來玩鳥 Starling Framework(3)Button!

    週末夜來介紹個簡單的DisplayObject就好.不論是在電腦上或行動裝置上,跟使用者互動次數最多的,大概就是按鈕了.因此,Starling有個Button類別,來做出這個常用的互動元件. 同樣是因 ...

  6. Solr6.6.0 用 SimplePostTool索引文件的启示

    本文主要是介绍通过SimplePostTool工具索引文件的结果进行确认,针对不同的文件,索引的结果不同. 1.创建core 首先启动solr,建立名称为data的core,SimplePostToo ...

  7. Laravel 5 系列教程三:视图变量传递和Blade

    免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇我们简单地说了Router,Views和Controllers的工作流程,这一次我就按照上 ...

  8. 《深入理解Java虚拟机》笔记2

    都知道Java对内存是自动垃圾回收的,什么样的内存是可以回收的? 这个问题是值得思考的. 对象已死的判定方法有两种: (1)引用计数器法 给对象添加一个引用计数器,有一个地方用到此对象,计数器加一. ...

  9. [转载] 在Linux中,开机自动运行普通用户的脚本程序

    FROM:http://blog.csdn.net/sinboy/article/details/2466225 FROM:http://www.2cto.com/os/201006/50680.ht ...

  10. mycat读写分离与主从切换

    1, 分库分表的优缺点.以及为什么分表方式无法成为主流? 分表:在台server上,长处是易维护,相似表分区.缺点是在一台dbserver上.无法分担IO.负载集中. 分库:在多台server上,长处 ...