配置包含函数和过程的sql包时出错

配置包含函数和过程的sql包时出错,sql,oracle-apex-5.1,Sql,Oracle Apex 5.1,我是SQL新手,我正在尝试创建一个包含函数和过程的包。不幸的是,我遇到了问题,出现了以下错误 'PLS-00103:在预期以下情况之一时遇到符号“FUNCTION”:authid是否为可访问?符号“is”已替换为“FUNCTION”以继续。编译失败,第2行(17:11:44)PLS-00103:在预期以下情况之一时遇到符号“NUMBER”:(编译失败,第3行(17:11:44)PLS-00103:在预期以下情况之一时遇到符号“CREATE”: 我已经阅读并进行了研究,试图解决这个问题,但一直无法

我是SQL新手,我正在尝试创建一个包含函数和过程的包。不幸的是,我遇到了问题,出现了以下错误

'PLS-00103:在预期以下情况之一时遇到符号“FUNCTION”:authid是否为可访问?符号“is”已替换为“FUNCTION”以继续。编译失败,第2行(17:11:44)PLS-00103:在预期以下情况之一时遇到符号“NUMBER”:(编译失败,第3行(17:11:44)PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

我已经阅读并进行了研究,试图解决这个问题,但一直无法解决。我可能需要一些帮助来指导我解决这个问题。 感谢stack overflow对这个问题的评论,因为我是SQL的新手

包装规格

创建或替换包e\u con\u pack
函数GET_LOCATION_namel(p_con_id in NUMBER,p_con_name out VARCHAR2)返回l_con_id;
程序添加(u)顾问;;
程序更新和位置;
程序删除\u con;
结束e_con_包装;
包体

create or replace PACKAGE BODY e_con_pack

    create or replace FUNCTION 
    GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
    RETURN NUMBER IS  
     LOCATION VARCHAR2(30);
    BEGIN
      SELECT LOCATION INTO LOCATION FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;    
      SELECT CST_NAME INTO p_con_name FROM LDS_CONSULTANT WHERE CONSULTANT_ID = p_con_id;

    RETURN l_con_id;
    END;

    create or replace PROCEDURE ADD_CONSULTANT
    ( p_con_id           LDS_CONSULTANT.CONSULTANT_ID%type,
      p_con_name         LDS_CONSULTANT.CST_NAME%type,
      p_con_start        LDS_CONSULTANT.START_DATE%type,
      p_con_end          LDS_CONSULTANT.LEAVE_DATE%type,
      p_con_loc          LDS_CONSULTANT.LOCATION%type,
      p_con_spec         LDS_CONSULTANT.SPECIALIST_AREA%type)
    IS
    BEGIN

    INSERT INTO LDS_CONSULTANT (CONSULTANT_ID, CST_NAME, START_DATE, LEAVE_DATE, LOCATION, SPECIALIST_AREA)
    VALUES (p_con_id, p_con_name, p_con_start, p_con_end, p_con_loc, p_con_spec);
    END;

    create or replace PROCEDURE update_location (
      p_con_id     IN lds_consultant.consultant_id%type,
      p_con_loc   IN lds_consultant.location%type
    )
    IS
    BEGIN
      UPDATE lds_consultant
        SET
          location = p_con_loc
      WHERE consultant_id = p_con_id;
    END;

    create or replace PROCEDURE delete_con (
      p_con_id  IN lds_consultant.consultant_id%type )
        As
        Begin   

             Delete from LDS_CONSULTANT Where CONSULTANT_ID=p_con_id;

    END;
    END e_con_pack;

我认为包定义中返回类型的问题

函数GET_LOCATION_namel(p_con_id in NUMBER,p_con_name out VARCHAR2)返回l_con_id

应该是其他类似的东西

FUNCTION GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)RETURN NUMBER;

此外,在函数体内部,没有对返回的变量l_cod_id进行任何修改

您缺少关键字
AS/is
。请尝试以下操作:

create or replace package e_con_pack
AS
    FUNCTION GET_LOCATION_namel (p_con_id in NUMBER, p_con_name out VARCHAR2)
:
: