【发布时间】:2022-01-11 03:15:20
【问题描述】:
我创建了名为 Class 的表,然后也创建了名为 PKG_Class 的包 没关系。 但是(Backage Body)的执行给了我错误“Package Body Created with Compilation Erorr”
创建表类 ( Class_id number(10) 主键, 类型号(5), 类名 varchar2(10), 最大数量(20) );
CREATE OR REPLACE PACKAGE PKG_Class IS
PROCEDURE ClassAdd(
ID_C in Class.Class_id%Type ,
C_Type in Class.Tybe%Type ,
C_Name in Class.Class_name%Type ,
C_Max in Class.Max%Type );
PROCEDURE ClassUpdate(
ID_C in Class.Class_id%Type ,
C_Type in Class.Tybe%Type ,
C_Name in Class.Class_name%Type ,
C_Max in Class.Max%Type );
PROCEDURE ClassDelete(
ID_C in Class.Class_id%Type );
PROCEDURE ClassFind(
ID_C in Class.Class_id%Type ,
C_Type out Class.Tybe%Type ,
C_Name out Class.Class_name%Type ,
C_Max out Class.Max%Type );
FUNCTION FindClass(
ID_C in Class.Class_id%Type
) RETURN Class%ROWTYPE ;
FUNCTION Find(
ID_C in Class.Class_id%Type ,
C_Type out Class.Tybe%Type ,
C_Name out Class.Class_name%Type ,
C_Max out Class.Max%Type
) RETURN BOOLEAN;
END PKG_Class;
////////////////////////////
CREATE OR REPLACE PACKAGE Body PKG_Class IS
PROCEDURE ClassAdd(
ID_C in Class.Class_id%Type ,
C_Type in Class.Tybe%Type ,
C_Name in Class.Class_name%Type ,
C_Max in Class.Max%Type )
IS
BEGIN
insert into Class
values(ID_C, C_Type, C_Name, C_Max );
Commit;
END ClassAdd;
PROCEDURE ClassUpdate(
ID_C in Class.Class_id%Type ,
C_Type in Class.Tybe%Type ,
C_Name in Class.Class_name%Type ,
C_Max in Class.Max%Type )
IS
BEGIN
Update Class set C_Type = Tybe ,
C_Name = Class_name ,
Width_Pool = Width_P ,
C_Max = Max
WHERE ID_C = Class_id ;
Commit;
END ClassUpdate;
PROCEDURE ClassDelete(
ID_C in Class.Class_id%Type )
IS
BEGIN
DELETE FROM Class WHERE
ID_C = Class_id;
Commit;
END ClassDelete;
PROCEDURE ClassFind(
ID_C in Class.Class_id%Type ,
C_Type out Class.Tybe%Type ,
C_Name out Class.Class_name%Type ,
C_Max out Class.Max%Type )
IS
BEGIN
SELECT Tybe, Class_name, Max
INTO C_Type, C_Name, C_Max
FROM Class
WHERE Class_id = ID_C;
END ClassFind;
FUNCTION Find(
ID_C in Class.Class_id%Type ,
C_Type out Class.Tybe%Type ,
C_Name out Class.Class_name%Type ,
C_Max out Class.Max%Type
) RETURN BOOLEAN
IS
BEGIN
SELECT Tybe, Class_name, Max
INTO C_Type, C_Name, C_Max
FROM Class
WHERE Class_id = ID_C;
RETURN TRUE;
Exception
WHEN NO_DATA_FOUND THEN
RETURN False;
END Find;
FUNCTION FindClass(
ID_C in Class.Class_id%Type
) RETURN Class%ROWTYPE
IS
RECORD_C Class%ROWTYPE;
BEGIN
SELECT *
Into RECORD_C
From Class
Where ID_C=Class_id;
RETURN RECORD_C;
END FindClass;
END PKG_Class;
【问题讨论】:
-
首先,不要从不同的账户向the same question问两次。其次,请阅读该问题的答案和 cmets,您被指示执行
show errors命令或查询user_errors表以了解实际错误。第三,至少尝试调试您的代码并找到出现错误的地方。不要只发布带有“为我调试”问题的代码清单 -
我是 oracle DB 的初学者,你能帮我在哪里执行“显示错误”吗?
-
我是 oracle DB 的初学者,你能帮我在哪里执行“显示错误”吗?我使用 iSQL*PLUS。