编译无效对象是DBA与数据库开发人员常见的工作之一。对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法。
一、当前数据库版本信息及无效对象
1、查看当前数据库版本
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi PL/SQL Release 10.2.0.4.0 - Production CORE 10.2.0.4.0 Production TNS for Solaris: Version 10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production
2、获得数据库中的无效对象
set linesize 180 col object_name format a45 SELECT owner, object_name, object_type, status FROM dba_objects WHERE status = 'INVALID' AND object_type IN ('PROCEDURE', 'FUNCTION', 'TRIGGER', 'VIEW', 'PACKAGE'); OWNER OBJECT_NAME OBJECT_TYPE STATUS ------------------------------ --------------------------------------------- ------------------- ------- OTC_WRHS_POSITION OTC_WRHS_POSITION_PCK_tmp PACKAGE INVALID
3、编译无效对象(编译方法很多,在此不一一列出)
/**************************************************/ /* Author: Robinson Cheng */ /* Blog: http://blog.csdn.net/robinson_0612 */ /* MSN: robinson_0612@hotmail.com */ /* QQ: 645746311 */ /**************************************************/ --注意该包对象中包体的名字含小写字符,因此编译时使用双引号括起来 SQL> alter package "OTC_WRHS_POSITION"."OTC_WRHS_POSITION_PCK_tmp" compile body;
二、捕获编译错误 1、使用show errors捕获错误
SQL> show errors; No errors. SQL> show errors package body "OTC_WRHS_POSITION"."OTC_WRHS_POSITION_PCK_tmp"; No errors.
2、如果使用show errors无法查询到错误,直接查询视图dba_errors
SQL> desc dba_errors; Name Type Nullable Default Comments -------------- -------------- -------- ------- --------------------------------------------------------------- OWNER VARCHAR2(30) NAME VARCHAR2(30) Name of the object TYPE VARCHAR2(12) Y Type: "TYPE", "TYPE BODY", "VIEW", "PROCEDURE", "FUNCTION", "PACKAGE", "PACKAGE BODY", "TRIGGER", "JAVA SOURCE" or "JAVA CLASS" SEQUENCE NUMBER Sequence number used for ordering purposes LINE NUMBER Line number at which this error occurs POSITION NUMBER Position in the line at which this error occurs TEXT VARCHAR2(4000) Text of the error ATTRIBUTE VARCHAR2(9) Y MESSAGE_NUMBER NUMBER Y SQL> select owner,name,TEXT from dba_errors where owner='OTC_WRHS_POSITION' and name='OTC_WRHS_POSITION_PCK_tmp' and 2 sequence=(select max(sequence) from dba_errors where owner='OTC_WRHS_POSITION'); OWNER NAME TEXT -------------------- ------------------------- ------------------------------------------------------------ OTC_WRHS_POSITION OTC_WRHS_POSITION_PCK_tmp PLS-00103: Encountered the symbol "ULL" when expecting one o f the following: . ( ) , * @ % & = - + < / > at in is mod remainder not re m <an exponent (**)> <> or != or ~= >= <= <> and or like LI KE2_ LIKE4_ LIKEC_ between || multiset member SUBMULTISET_ The symbol "." was substituted for "ULL" to continue.
您还没有登录,请您登录后再发表评论
存储过程是一组预编译的PL/SQL语句,可以被多次调用,减少了网络传输的开销,提高了性能。函数则返回一个值,常用于计算或数据转换。例如,在`jbpm.sql`文件中,可能包含了与业务流程管理(BPM)相关的PL/SQL存储...
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。 <br>集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时...
安装后,用户在使用PL/SQL时,可能会看到中文界面、错误提示和帮助文档,从而更顺畅地进行数据库开发工作。 总的来说,"PL/SQL中文包"是Oracle数据库开发者和管理员的重要工具,它通过提供中文支持,使国内用户能够...
在实际使用中,PL/SQL Developer提供了诸如语法高亮、自动完成、错误检查、调试器、数据库连接管理、代码模板等功能。这些特性使得开发者可以更专注于代码逻辑,而不是繁琐的环境配置和错误查找。通过这个评估版本,...
**4.3 存储过程** 是预编译的PL/SQL代码集合,可以接受输入参数,返回结果,提高效率并简化代码管理。 **4.4 触发器** 是在特定数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行的PL/SQL代码,常用于实现业务...
在"plsql_day02"这个压缩包文件中,很可能包含了第二天学习PL/SQL时的一些示例代码。这些代码可能涉及到以下知识点: 1. **变量声明**:在PL/SQL中,我们首先需要声明变量来存储数据,比如`DECLARE`关键字用于定义...
5. **异常处理**:PL/SQL提供了强大的异常处理机制,可以捕获和处理运行时错误,确保程序的健壮性。 6. **兼容性**:PL/SQL可以与多种开发工具和编程语言(如Java、C#)协同工作,增强了其适用范围。 #### 三、PL/...
4. **存储过程和函数**:存储过程是一组预先编译的PL/SQL语句,可以在需要时调用,减少网络通信,提高性能。函数与存储过程类似,但必须返回一个值。它们可以用于封装复杂的业务逻辑,增强代码复用性。 5. **异常...
同时,PL/SQL Developer提供了丰富的调试工具,如查看结果集、DBMS_OUTPUT和HTP输出,帮助开发者深入理解程序运行的细节。 #### 四、优化与专用SQL:提升程序效率 优化程序是提高应用性能的重要环节。PL/SQL ...
- 编译时警告:利用编译器提供的警告来发现潜在问题,提前修复,避免运行时错误。 - 条件编译:通过条件编译指令,实现针对不同数据库版本或环境的代码适应性。 - 11g的新优化级别:进一步提升了性能,提供更多的...
6. **存储过程与函数**:存储过程是预编译的PL/SQL代码块,可以接受参数,执行一系列操作,并返回结果。函数与存储过程类似,但必须返回一个值。 7. **包**:包是包含相关过程、函数和其他元素的逻辑单元,提供封装...
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。 集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行...
6. **存储过程和函数**:存储过程是一组预编译的PL/SQL语句,可以在数据库中存储和调用,减少网络通信,提高性能。函数与之类似,但必须返回一个值。 7. **包(Package)**:包是将相关的过程、函数、变量和常量...
1. 存储过程:是一组SQL和PL/SQL语句,它们被编译并存储在数据库中,可以作为一个单元执行。这提高了代码的重用性和执行效率,减少了网络通信。 2. 包:是PL/SQL的一个高级特性,用于组织相关的存储过程、函数、...
• 如果有编译错误,你必须找出它位于源文件中何处,纠正它,并转回到 SQL*Plus 重新编译它,然后再找下一处错误。 • 使用 SQL*P lus 或你的客户端应用程序测试程序单元。 • 如果发生运行时错误,你又不得不辛苦...
存储过程是预编译的PL/SQL代码块,可以被多次调用,提高了代码复用性和性能。它们可以接受输入参数,返回输出结果,并能执行复杂的业务逻辑。例如,一个简单的存储过程可能用于计算两个数字的和: ```sql CREATE OR...
根据提供的文件信息,我们可以推断出本书主要关注的是Oracle SQL 和 PL/SQL 的掌握与应用。下面将基于这些信息来生成相关的知识点。 ### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:...
14. **预编译和缓存**:预编译PL/SQL代码到数据字典,减少运行时解析时间。了解PL/SQL的解析缓存,避免过多的解析导致内存压力。 15. **安全性**:使用角色和权限管理,最小化对敏感数据的访问。理解并应用`PRAGMA ...
6. Debug 和优化 PL/SQL 代码:在 PL/SQL Developer 11.0 中,可以使用调试器来 debug PL/SQL 代码,追踪代码的执行过程,检查变量的值和调用栈等信息。同时,PL/SQL Developer 11.0 也提供了代码优化功能,可以对...
相关推荐
存储过程是一组预编译的PL/SQL语句,可以被多次调用,减少了网络传输的开销,提高了性能。函数则返回一个值,常用于计算或数据转换。例如,在`jbpm.sql`文件中,可能包含了与业务流程管理(BPM)相关的PL/SQL存储...
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。 <br>集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时...
安装后,用户在使用PL/SQL时,可能会看到中文界面、错误提示和帮助文档,从而更顺畅地进行数据库开发工作。 总的来说,"PL/SQL中文包"是Oracle数据库开发者和管理员的重要工具,它通过提供中文支持,使国内用户能够...
在实际使用中,PL/SQL Developer提供了诸如语法高亮、自动完成、错误检查、调试器、数据库连接管理、代码模板等功能。这些特性使得开发者可以更专注于代码逻辑,而不是繁琐的环境配置和错误查找。通过这个评估版本,...
**4.3 存储过程** 是预编译的PL/SQL代码集合,可以接受输入参数,返回结果,提高效率并简化代码管理。 **4.4 触发器** 是在特定数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行的PL/SQL代码,常用于实现业务...
在"plsql_day02"这个压缩包文件中,很可能包含了第二天学习PL/SQL时的一些示例代码。这些代码可能涉及到以下知识点: 1. **变量声明**:在PL/SQL中,我们首先需要声明变量来存储数据,比如`DECLARE`关键字用于定义...
5. **异常处理**:PL/SQL提供了强大的异常处理机制,可以捕获和处理运行时错误,确保程序的健壮性。 6. **兼容性**:PL/SQL可以与多种开发工具和编程语言(如Java、C#)协同工作,增强了其适用范围。 #### 三、PL/...
4. **存储过程和函数**:存储过程是一组预先编译的PL/SQL语句,可以在需要时调用,减少网络通信,提高性能。函数与存储过程类似,但必须返回一个值。它们可以用于封装复杂的业务逻辑,增强代码复用性。 5. **异常...
同时,PL/SQL Developer提供了丰富的调试工具,如查看结果集、DBMS_OUTPUT和HTP输出,帮助开发者深入理解程序运行的细节。 #### 四、优化与专用SQL:提升程序效率 优化程序是提高应用性能的重要环节。PL/SQL ...
- 编译时警告:利用编译器提供的警告来发现潜在问题,提前修复,避免运行时错误。 - 条件编译:通过条件编译指令,实现针对不同数据库版本或环境的代码适应性。 - 11g的新优化级别:进一步提升了性能,提供更多的...
6. **存储过程与函数**:存储过程是预编译的PL/SQL代码块,可以接受参数,执行一系列操作,并返回结果。函数与存储过程类似,但必须返回一个值。 7. **包**:包是包含相关过程、函数和其他元素的逻辑单元,提供封装...
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。 集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行...
6. **存储过程和函数**:存储过程是一组预编译的PL/SQL语句,可以在数据库中存储和调用,减少网络通信,提高性能。函数与之类似,但必须返回一个值。 7. **包(Package)**:包是将相关的过程、函数、变量和常量...
1. 存储过程:是一组SQL和PL/SQL语句,它们被编译并存储在数据库中,可以作为一个单元执行。这提高了代码的重用性和执行效率,减少了网络通信。 2. 包:是PL/SQL的一个高级特性,用于组织相关的存储过程、函数、...
• 如果有编译错误,你必须找出它位于源文件中何处,纠正它,并转回到 SQL*Plus 重新编译它,然后再找下一处错误。 • 使用 SQL*P lus 或你的客户端应用程序测试程序单元。 • 如果发生运行时错误,你又不得不辛苦...
存储过程是预编译的PL/SQL代码块,可以被多次调用,提高了代码复用性和性能。它们可以接受输入参数,返回输出结果,并能执行复杂的业务逻辑。例如,一个简单的存储过程可能用于计算两个数字的和: ```sql CREATE OR...
根据提供的文件信息,我们可以推断出本书主要关注的是Oracle SQL 和 PL/SQL 的掌握与应用。下面将基于这些信息来生成相关的知识点。 ### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:...
当您需要某个信息时,它将自动出现,至多单击即可将信息调出。 <br>集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时...
14. **预编译和缓存**:预编译PL/SQL代码到数据字典,减少运行时解析时间。了解PL/SQL的解析缓存,避免过多的解析导致内存压力。 15. **安全性**:使用角色和权限管理,最小化对敏感数据的访问。理解并应用`PRAGMA ...
6. Debug 和优化 PL/SQL 代码:在 PL/SQL Developer 11.0 中,可以使用调试器来 debug PL/SQL 代码,追踪代码的执行过程,检查变量的值和调用栈等信息。同时,PL/SQL Developer 11.0 也提供了代码优化功能,可以对...