【发布时间】:2021-02-20 01:15:20
【问题描述】:
我正在制作一个包以在同一个地方收集一些功能。但是,当我尝试创建主体时,它总是出现错误。
我已经尝试了我所知道的一切,但无论我尝试多少次,它总是给我同样的错误
这是我的包裹,不会给我带来任何错误。
create or replace PACKAGE talde_paquete AS
procedure editaldeak(Equipo Taldeak.Kod_taldea%TYPE, Nombre Taldeak.izena%TYPE, Localidad Taldeak.Herria%TYPE, Correo taldeak.helbide_elektronikoa%TYPE,Campo Taldeak.Zelaia%TYPE);
procedure equipopartidos(Equipo partidak.talde1%TYPE);
END talde_paquete;
这是我的包裹体,它总是给我带来同样的错误
CREATE OR REPLACE PACKAGE BODY talde_paquete
IS
procedure editaldea(Equipo Taldeak.Kod_taldea%TYPE, Nombre Taldeak.izena%TYPE, Localidad Taldeak.Herria%TYPE, Correo taldeak.helbide_elektronikoa%TYPE,Campo Taldeak.Zelaia%TYPE)
AS
VTaldea NUMBER(1);
Taldenoexist EXCEPTION;
BEGIN
SELECT COUNT(Kod_Taldea) INTO VTaldea FROM Taldeak WHERE Kod_Taldea=Equipo;
IF VTaldea=1 THEN
UPDATE Taldeak SET Izena=Nombre, Herria=Localidad, Helbide_Elektronikoa=Correo, Zelaia=Campo WHERE Kod_taldea=Equipo;
ELSE
RAISE Taldenoexist;
END IF;
EXCEPTION
WHEN Taldenoexist THEN
DBMS_OUTPUT.PUT_LINE('Taldea ez da existitzen');
END editaldea;
procedure equipopartidos(Equipo partidak.talde1%TYPE)
IS
CURSOR PartidoEquipo IS
SELECT Talde1, Talde2, P_Data FROM Partidak WHERE Talde1 LIKE Equipo OR Talde2 LIKE Equipo;
E1 Partidak.Talde1%TYPE;
E2 Partidak.Talde2%TYPE;
Fecha Partidak.P_Data%TYPE;
existe NUMBER(3);
Taldexist EXCEPTION;
BEGIN
SELECT COUNT(Talde1) INTO existe FROM partidak WHERE Talde1=Equipo OR Talde2=Equipo;
IF (existe>0)THEN
OPEN PartidoEquipo;
FETCH PartidoEquipo INTO E1,E2,Fecha;
WHILE PartidoEquipo%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(E1||' taldeak '||E2||' taldearen aurka jokatuko du '||Fecha);
FETCH PartidoEquipo INTO E1,E2,Fecha;
END LOOP;
CLOSE PartidoEquipo;
ELSE
RAISE Taldexist;
END IF;
EXCEPTION
WHEN Taldexist THEN
DBMS_OUTPUT.PUT_LINE('Taldea ez da existitzen');
END equipopartidos;
END talde_paquete;
/
这是我在尝试运行正文脚本时遇到的错误。
LINE/COL ERROR
--------- -------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
1/14 PLS-00905: object BIZKAIABASKET.TALDE_PAQUETE is invalid
1/14 PLS-00304: cannot compile body of 'TALDE_PAQUETE' without its specification
Errors: check compiler log
【问题讨论】:
-
它很简单,只需阅读错误消息并解决问题。您的包装规格无效,请找出原因
-
也许你缺少 / 作为你的包规范的最后一行。否则,代码将不会被执行,并且规范将丢失。你的包体最后确实有 /。
-
该错误意味着规范存在但无效 - 所以“这是我的包,不会给我带来任何错误。”不可能是真的。再次运行规范编译,看看它说了什么;和/或查询
user_errors以查看显示的内容。 (可能其中一个表或列名是错误的,但我们看不到您的架构,因此您必须进行调查...)