【问题标题】:PLSQL Error in apex when compiling the following code- PLS-00103编译以下代码时出现 PLSQL 错误 - PLS-00103
【发布时间】:2021-08-11 23:02:57
【问题描述】:

我刚刚提到了与我遇到的相同 ORA 和 PLS 错误相关的类似帖子,但我仍然无法使用提供的解决方案来解决它。

我收到以下错误:PLS-00103:在预期以下之一时遇到符号“文件结尾”:开始函数杂注过程

我的代码:

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;

【问题讨论】:

  • 缺少现有代码。首先,在结束包规范的第一个分号后添加一个斜杠。如果您将modificaAngajatverifica_telefon 的主体添加到包主体并在它们之后添加end;,似乎没有问题。
  • 格式化您的代码可以更容易地发现不匹配的开始/结束关键字等。

标签: plsql oracle-apex apex-code plsql-package


【解决方案1】:

当您使用 Oracle Apex 标记问题时,我认为您正尝试在其 SQL Workshop 中创建该包。因此,它一次只能执行一条语句。

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

或者,选择 (paint it blue) 包规范语句并运行它;然后取消选择它并选择包体来运行该语句。

【讨论】:

    【解决方案2】:

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

    --Firstly creating a declaration of a package
    
    CREATE OR REPLACE PACKAGE PACHET 
    IS
    PROCEDURE EXAMPLE(...);
    .
    .
    END PACHET;
    /
    

    我认为你没有结束包,如果我没有错或者你没有粘贴完整的代码,那会导致错误,你也可以在结束语句中添加过程或包的名称,这将使它易于遵循代码。 还要先定义包(规格),然后运行正文部分。

    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;
    /
    

    【讨论】:

      猜你喜欢
      • 2014-04-12
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多