当我尝试执行此代码时,我收到以下错误。我无法解决这个问题 - 我错过了什么?
SHOW ERRORS; Errors for PACKAGE BODY PKG_VIEW_LEDGER: LINE/COL ERROR -------- ----------------------------------------------------------------- 0/0 PL/SQL: Compilation unit analysis terminated 1/14 PLS-00304: cannot compile body of 'PKG_VIEW_LEDGER' without its specification 1/14 PLS-00905: object SYSTEM.PKG_VIEW_LEDGER is invalid
---下面的代码---
CREATE OR REPLACE PACKAGE PKG_VIEW_LEDGER AS
TYPE cur_view_data is REF CURSOR;
PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
END PRG_VIEW_LEDGER;
/
CREATE OR REPLACE PACKAGE BODY PKG_VIEW_LEDGER AS
PROCEDURE sp_view_ledger( person IN VARCHAR2, cur_inout IN OUT cur_view_data)
IS
tmp_cursor cur_view_data;
BEGIN
OPEN tmp_cursor FOR
select * from ledger where person like '%" + myArg.ToUpper + "%';
cur_inout := tmp_cursor;
END sp_view_ledger;
END PKG_VIEW_LEDGER;
/
答案 0 :(得分:1)
首先,根据错误,您将在SYSTEM
架构中创建包。不要那样做。 SYS
和SYSTEM
是特殊的,只有Oracle才能用于Oracle提供的对象。您需要一个新架构,您可以在其中创建自己的对象。 SYS
和SYSTEM
是特殊的,并且总是与普通模式的行为方式相同,因此如果使用这些模式,各种功能将无法正常工作。
其次,当您定义包规范时,END
与您的CREATE
不符。在结束PKG_VIEW_LEDGER
时,您正在创建PRG_VIEW_LEDGER
。 PKG
!= PRG
。如果在创建包规范后有show errors
,则错误会告诉您。
答案 1 :(得分:0)
我修改了代码并且工作正常。请在您身边尝试并告诉我。谢谢。
CREATE OR REPLACE PACKAGE PKG_VIEW_LEDGER AS
TYPE cur_view_data is REF CURSOR;
PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
END PkG_VIEW_LEDGER;
--------------------------------------------------------------
Package created.
--------------------------------------------------------------
CREATE OR REPLACE PACKAGE PKG_VIEW_LEDGER AS
TYPE cur_view_data is REF CURSOR;
PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
END PRG_VIEW_LEDGER;
/
CREATE OR REPLACE PACKAGE BODY PKG_VIEW_LEDGER AS
PROCEDURE sp_view_ledger( person IN VARCHAR2, cur_inout IN OUT cur_view_data)
IS
tmp_cursor cur_view_data;
BEGIN
OPEN tmp_cursor FOR
select * from avrajit;
cur_inout := tmp_cursor;
END sp_view_ledger;
END PKG_VIEW_LEDGER;
/
-----------------------------------------------------
Package Body created.
0.04 seconds