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

由于依赖关系, 而编译失败, 需要重新编译. ( 所谓依赖, 是指存储过程, 函数等在运行中调用的对象, 比如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. 安网讯通签约孟强美容CRM

    整形美容CRM软件是辽宁安网讯通有限公司为孟强整形医院定制开发的一套客户关系管理软件,软件专门针对整形美容行业专科门诊的需求,能满足大中小整形美容机构或或各种专科科室的日常业务需求. 主要功能包括: ...

  2. 网络采集软件核心技术剖析系列(2)---如何使用C#语言获得任意站点博文的正文及标题

    一 本系列随笔概览及产生的背景 本系列开篇受到大家的热烈欢迎,这对博主是莫大的鼓励,此为本系列第二篇,希望大家继续支持,为我继续写作提供动力. 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受 ...

  3. Nginx实现图片防盗链(referer指令)

    什么是图片盗链   每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片. 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上, 而是直接 ...

  4. 【java】java中直接根据Date 获取明天的时间

    展示代码: @Test public void dateTest(){ Date now = new Date(); System.out.println(now); // java.util.Dat ...

  5. 'dict_values' object does not support indexing, Python字典dict中由value查key

    Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...

  6. mysql show profiles使用分析sql性能

    mysql show profiles使用分析sql性能 Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看一下我的数据库版本 mysql> ...

  7. 【重点突破】—— Vue2.0 transition 动画Demo实践填坑

    前言:vue1.0版本和2.0版本的过渡系统改变是很大的,具体请详看文档介绍.本文转载自郭锦荣的博客,一共列举了四种transition的使用实践,分别是css过渡.css动画.javascript钩 ...

  8. ubuntu下wine操作usb串口

    呃,换成ubuntu后想玩下文曲星,貌似没有linux下的下载工具,只好用wine. 用的是ch340的usb转串口,不得不说ubuntu果然集大成,这些驱动都有了,用minicom设置设备为/dev ...

  9. vue2组件之异步组件...resolve

    看开源项目的时候看到这样的用法: 发现与之前定义组件的方式不一样,这个resolve又是什么? 原来这个是vue的异步组件实现,可以看这里:<异步组件> 异步组件的需求: 在大型应用中,我 ...

  10. 两个IP实现IIS和Apache公用80端口的设置方法

      1. 打开命令提示符并确保您位于 X:\Inetpub\Adminscripts 文件夹(其中 X 是 IIS 安装驱动器)中.为此,请在命令提示符下键入以下命令行: X: CD \Inetpub ...