编译以下代码时apex中出现PLSQL错误-PLS-00103

编译以下代码时apex中出现PLSQL错误-PLS-00103,plsql,oracle-apex,apex-code,plsql-package,Plsql,Oracle Apex,Apex Code,Plsql Package,我只是参考了和我所面临的相同的ORA&PLS错误相关的类似帖子,但仍然无法使用提供的解决方案来解决它 我收到以下错误:PLS-00103:在期望以下操作之一时遇到符号“文件结束”:开始函数pragma过程 我的代码: create package PACHET is procedure adaugaAngajat (v_id angajati.id_ang%type, v_idL angajati.id_lab%type, v_numeP angajati.nume%type, v_p

我只是参考了和我所面临的相同的ORA&PLS错误相关的类似帖子,但仍然无法使用提供的解决方案来解决它

我收到以下错误:PLS-00103:在期望以下操作之一时遇到符号“文件结束”:开始函数pragma过程

我的代码:

create package PACHET is 
    procedure adaugaAngajat (v_id angajati.id_ang%type, v_idL angajati.id_lab%type, v_numeP angajati.nume%type, v_prenume angajati.prenume%type, v_ore angajati.ore_lucrate%type, v_sal angajati.salariul%type, v_dat angajati.data_angajare%type, v_tel angajati.telefon%type, v_post angajati.postocupat%type );
    procedure modificaAngajat(v_id angajati.id_ang%type, v_idL angajati.id_lab%type, v_numeP angajati.nume%type, v_prenume angajati.prenume%type, v_ore angajati.ore_lucrate%type, v_sal angajati.salariul%type, v_dat angajati.data_angajare%type, v_tel angajati.telefon%type, v_post angajati.postocupat%type );
    function verifica_telefon(v_tel angajati.telefon%type)
    return boolean;
    exp1 exception;
end;
    
create or replace package body PACHET is
    procedure adaugaAngajat (v_id angajati.id_ang%type, v_idL angajati.id_lab%type, v_numeP angajati.nume%type, v_prenume angajati.prenume%type, v_ore angajati.ore_lucrate%type, v_sal angajati.salariul%type, v_dat angajati.data_angajare%type, v_tel angajati.telefon%type, v_post angajati.postocupat%type)
    is 
    begin
        if ( verifica_telefon(v_tel)) 
        then 
            raise exp1;
        else
            insert into angajati values (v_id, v_idL, v_numeP, v_prenume, v_ore, v_sal, v_dat, v_tel, v_post);
        end if;
    exception 
        when exp1 then
            dbms_output.put_line('Exista deja acest angajat!');
    end;

当您用Oracle Apex标记这个问题时,我猜想您正在尝试在其SQL研讨会中创建这个包。当然,它一次只能执行一条语句

因此,只将包规范放入编辑器并运行它。然后删除它并将包体放入编辑器并运行该代码段


或者,选择(将其涂成蓝色)PackageSpec语句并运行它;然后取消选择它并选择包体来运行该语句。

PLS-00103,简而言之,此错误意味着您在pl/SQL代码中出现了一些语法错误,添加了我们应该遵循的语法

--Firstly creating a declaration of a package

CREATE OR REPLACE PACKAGE PACHET 
IS
PROCEDURE EXAMPLE(...);
.
.
END PACHET;
/
我认为您没有结束包,这会导致错误。如果我没有错,或者您没有粘贴完整的代码,您还可以使用end语句添加过程或包的名称,以便于遵循代码。 另外,首先定义包(规格),然后运行主体部分

create or replace package body PACHET is
procedure adaugaAngajat (v_id angajati.id_ang%type, v_idL angajati.id_lab%type, v_numeP angajati.nume%type, v_prenume angajati.prenume%type, v_ore angajati.ore_lucrate%type, v_sal angajati.salariul%type, v_dat angajati.data_angajare%type, v_tel angajati.telefon%type, v_post angajati.postocupat%type)
is 
begin
if ( verifica_telefon(v_tel)) 
then 
raise exp1;
else  insert into angajati values (v_id, v_idL, v_numeP, v_prenume, v_ore, v_sal, v_dat, v_tel, v_post);
end if;
exception 
when exp1 then
dbms_output.put_line('Exista deja acest angajat!');
end adaugaAngajat;
end PACHET;
/

缺少现有代码。首先,在第一个分号后添加斜杠,该分号结束了包的规范。如果您将
modificaAngajat
verifica_telefon
的正文添加到包正文并添加
结尾,似乎没有问题跟随它们。格式化代码可以更容易地发现不匹配的开始/结束关键字等。