【问题标题】:Oracle package error. PLS-00103: Encountered the symbol "CREATE"Oracle 包错误。 PLS-00103:遇到符号“CREATE”
【发布时间】:2020-09-10 13:05:40
【问题描述】:

    create  or replace package pachet_f_p is
    function majorare_sal_manageri(sal in  NUMBER, majorare in  NUMBER) return NUMBER;
    end pachet_f_p;


    create or replace package body pachet_f_p
    is
     create or replace function majorare_sal_manageri(sal in  NUMBER, majorare in  NUMBER)
    return INTEGER is
    nr_angajati INTEGER :=0;
    begin
    dbms_output.put_line('Angajatii care primesc majorare de '|| majorare || 'au ID-urile urmatoare :');
    /*
    declare
    cursor numara_ang_cccc is
      select ID from MANAGERI where SALARIU = sal;
      m_ID MANAGERI.ID%TYPE;
    begin
      open numara_ang_c;
      loop
        fetch numara_ang_c into m_ID;
        exit when numara_angajati_cursor%NOTFOUND;
        dbms_output.put_line(m_ID);
        update MANAGERI 
        set
        SALARIU = SALARIU + majorare
        where  ID = m_ID;
        nr_angajati := nr_angajati +1;
      end loop;
      close numara_ang_cccc;
    end; 
    */
    return nr_angajati;
    end majorare_sal_manageri;

    end pachet_f_p;

我可以运行前 3 行,但其余行会出错: 错误(5,2):PLS-00103:在预期以下情况之一时遇到符号“CREATE”:begin end function pragma procedure subtype type current cursor delete exists prior 请问有人能找出我做错了什么吗?

【问题讨论】:

  • 请参阅stackoverflow.com/questions/20334067/…,它可以帮助您解决问题。
  • PLSQL..........我只是又蠢又累。谢谢
  • PLSQL.......................... ..........我看到了那个问题,但对我不起作用。还是谢谢你!
  • 你用的是oracle还是mariadb?
  • oracle sql 开发者

标签: oracle plsql


【解决方案1】:

首先创建包规范和包主体(两个单独的 pl/sql 块)这在 Sql Developer 中编译没有错误

       create  or replace package pachet_f_p is
          function majorare_sal_manageri(sal in  NUMBER, majorare in  NUMBER) 
            return NUMBER;
        end pachet_f_p;
       -- add back slash here
       /    
        create or replace package body pachet_f_p
        is
         --create or replace (comment or remove this)
         function majorare_sal_manageri(sal in  NUMBER, majorare in  NUMBER)
        return number is
        nr_angajati number :=0;
        begin
        dbms_output.put_line('Angajatii care primesc majorare de '|| majorare || 'au ID-urile urmatoare :');
        /*
        declare
        cursor numara_ang_cccc is
          select ID from MANAGERI where SALARIU = sal;
          m_ID MANAGERI.ID%TYPE;
        begin
          open numara_ang_c;
          loop
            fetch numara_ang_c into m_ID;
            exit when numara_angajati_cursor%NOTFOUND;
            dbms_output.put_line(m_ID);
            update MANAGERI 
            set
            SALARIU = SALARIU + majorare
            where  ID = m_ID;
            nr_angajati := nr_angajati +1;
          end loop;
          close numara_ang_cccc;
        end; 
        */
          return nr_angajati;
          end majorare_sal_manageri;
         end pachet_f_p;
/

【讨论】:

  • 成功了!非常感谢你!!!我真的很感激!
猜你喜欢
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多