oracle 查看 编译错误,Oracle-已编译但有错误,命令行提交包不显示结果

开发环境名称

版本

操作系统

Windows 10 X64

Oracle

win64_11gR2_database

PLSQL Developer

11.0.4.1788(64 bit)01.179332 - Unlimited user license

Beyond Compare

4

问题-已编译但有错误

问题描述

开发环境和测试环境分别创建了一个包 P_OST_STAT_STAFF,开发环境调用无误,测试环境调用报错

ORA-06550:第14行,第3列:

PLS-00905:objectP_OST_STAT_STAFFisinvalid

ORA-06550:第14行,第3列:

PL/SQL:Statementignored

ORA-06550:第20行,第3列:

PLS-00905:objectP_OST_STAT_STAFFisinvalid

ORA-06550:第20行,第3列:

PL/SQL:Statementignored

查看包体和包定义,都显示 x

9508dbe5edb56e32a2d3e8e8dddfece0.png

00c1b1ac6a858e558e26b3b970927b09.png

进入包定义,重新编译,报错

PACKAGE BODY P_OST_STAT_STAFF编译错误

错误:PLS-00905:objectP_OST_STAT_STAFFisinvalid

错误:PLS-00304:cannot compile body of'P_OST_STAT_STAFF'without its specification

错误:PL/SQL:Compilationunit analysis terminated

46a28d72e73a482a5be1c1babc6a7d60.png

问题分析

找到之前这个包的定义,和最新的定义使用 Beyond Compare 4 对比,发现之前的定义是

CREATE OR REPLACE PACKAGE P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

/

CREATE OR REPLACE PACKAGE BODY P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

现在的定义是

CREATE OR REPLACE PACKAGE P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

CREATE OR REPLACE PACKAGE BODY P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

问题解决

在现在的定义包声明和包定义之间加上 /,再次创建

测试结果

查看包声明

c7c55572812c2ba47a186bc1d762f917.png

查看包定义

6a3c4f4e889615c71efe9324ceccbbd7.png

调用也没有报错,问题解决

问题-命令行提交包不显示结果

问题描述

存储过程 01_tpsdata_alt_package_P_OST_STAT_STAFF.sql 如下

CREATE OR REPLACE PACKAGE P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

/

CREATE OR REPLACE PACKAGE BODY P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

直接在界面中点击执行,提示执行成功

56da16c474063fec697d72e0b1e35a67.png

在命令行中运行 @D:\DBScript\01_tpsdata_alt_package_P_OST_STAT_STAFF.sql,提示一个创建提示成功的信息后,显示了一个数字,就没提示了

SQL>@D:\DBScript\01_tpsdata_alt_package_P_OST_STAT_STAFF.sql

Packagecreated

678

问题分析

命令行下执行,需要提交,这个存储过程最后没有加上提交的代码,所以没有提示

问题解决

修改存储过程 01_tpsdata_alt_package_P_OST_STAT_STAFF.sql 如下

CREATE OR REPLACE PACKAGE P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

/

CREATE OR REPLACE PACKAGE BODY P_OST_STAT_STAFF IS

--方法及存储过程

ENDP_OST_STAT_STAFF;

/

在命令行中运行 @D:\DBScript\01_tpsdata_alt_package_P_OST_STAT_STAFF.sql,提示执行成功

SQL>@D:\DBScript\01_tpsdata_alt_package_P_OST_STAT_STAFF.sql

Packagecreated

Packagebody created

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值