请问一下我这段代码是哪里错了啊,看提示但不知道怎么解决谢谢!
SQL> create or replace package sp_package is
  2  procedure update_sal(name varchar2,newSal number)
  3  is
  4  begin
  5  update emp set sal=newSal where ename=name;
  6  end;
  7  function function_income(name varchar2)
  8  return number is
  9  fun_salary number;
 10  begin
 11  select sal*12 + nvl(comm,0)*12 into fun_salary from emp
 12  where ename=name;
 13  return fun_salary;
 14  end;
 15  end;
 16  /Warning: Package created with compilation errorsSQL> show error;
Errors for PACKAGE SCOTT.SP_PACKAGE:
--显示的错误信息看不明白,不知道什么意思。
LINE/COL ERROR
-------- -----------------------------------------------------------------------------------------------------------------------------------------
4/1      PLS-00103: 出现符号 "BEGIN"在需要下列之一时:   language  
7/1      PLS-00103: 出现符号 "FUNCTION"在需要下列之一时:   end not pragma final     instantiable order overriding static member constructor map  

解决方案 »

  1.   

     --先创建包的申明信息
     create or replace package  sp_package is
     procedure update_sal(name varchar2,newSal number);
     function function_income(name varchar2)
     return number;
     end;
     /
     --再创建包体
     create or replace package body sp_package is procedure update_sal(name varchar2,newSal number)
     is
     begin
     update emp set sal=newSal where ename=name;
     end; function function_income(name varchar2)
     return number 
     is
     fun_salary number;
     begin
     select sal*12 + nvl(comm,0)*12 into fun_salary from emp
     where ename=name;
     return fun_salary;
     end;
     end sp_package;
     /
      

  2.   

    create or replace package body sp_package
      

  3.   

    有什么问题呢?
    --先创建包的申明信息
    CREATE OR REPLACE PACKAGE sp_package IS
      PROCEDURE update_sal(NAME VARCHAR2, newSal NUMBER);
      FUNCTION function_income(NAME VARCHAR2) RETURN NUMBER;
    END;
    /
    --再创建包体
    CREATE OR REPLACE PACKAGE BODY sp_package IS
      PROCEDURE update_sal(NAME VARCHAR2, newSal NUMBER) IS
      BEGIN
        UPDATE emp SET sal = newSal WHERE ename = NAME;
      END;  FUNCTION function_income(NAME VARCHAR2) RETURN NUMBER IS
        fun_salary NUMBER;
      BEGIN
        SELECT sal * 12 + nvl(comm, 0) * 12 INTO fun_salary FROM emp WHERE ename = NAME;
        RETURN fun_salary;
      END;
    END sp_package;
    /
      

  4.   

    支持!!!!!!!!!!!!
    orcle中pl/sql包分包头和包体两部分,包头用来声明过程,函数,游标或者常量等,它的访问范围在整个用户下,包体是用来对包头中申明的过程,函数。的具体定义。
      

  5.   

    CREATE OR REPLACE PACKAGE sp_package IS
      PROCEDURE update_sal(NAME VARCHAR2, newSal NUMBER);
      FUNCTION function_income(NAME VARCHAR2) RETURN NUMBER;
    END;--再创建包体
    CREATE OR REPLACE PACKAGE BODY sp_package IS  PROCEDURE update_sal(NAME VARCHAR2, newSal NUMBER) IS
      BEGIN
        UPDATE emp SET sal = newSal WHERE ename = NAME;
      END;  FUNCTION function_income(NAME VARCHAR2) RETURN NUMBER IS
        fun_salary NUMBER;
      BEGIN
        SELECT sal * 12 + nvl(comm, 0) * 12 INTO fun_salary FROM emp WHERE ename = NAME;
        RETURN fun_salary;
      END;
    END sp_package;在PL/SQL 中执行还是有错误的。
      

  6.   

    --再创建包体
    CREATE OR REPLACE PACKAGE BODY sp_package IS
    Compilation errors for PACKAGE SYS.SP_PACKAGEError: PLS-00103: Encountered the symbol "CREATE"
    Line: 7
    Text: CREATE OR REPLACE PACKAGE BODY sp_package IS