创建包SQL开发人员时出现符号错误

时间:2018-02-22 16:34:03

标签: sql oracle-sqldeveloper packages

我的目标是为我创建的sql函数创建一个包。 我使用的是EMP和DEPT表(https://livesql.oracle.com/apex/livesql/file/content_O5AEB2HE08PYEPTGCFLZU9YCV.html

这里的功能(有效):

create or replace function PRENOM_EMP (nom in EMPLOYEES.LAST_NAME%type)
return EMPLOYEES.FIRST_NAME%type
is prenom EMPLOYEES.FIRST_NAME%type;
begin
    select FIRST_NAME
    into prenom
    FROM EMPLOYEES
    WHERE last_name = nom;
return prenom;

EXCEPTION
    when too_many_rows then
    return ('l ordre sql ramene plus d une ligne');

end;

Select PRENOM_EMP ('King') from dual; /* Example of use */

这是我尝试将此功能放入包中的方法:

create or replace package PKG_EMPLOYES as

function PRENOM_EMP (nom in EMPLOYEES.LAST_NAME%type)
    return EMPLOYEES.FIRST_NAME%type IS
    prenom EMPLOYEES.FIRST_NAME%type;
begin
    select FIRST_NAME
    into prenom
    FROM EMPLOYEES
    WHERE last_name = nom;
return prenom;

EXCEPTION
    when too_many_rows then
    return ('l ordre sql ramene plus d une ligne');

end PRENOM_EMP;

end PKG_EMPLOYES;

错误发生在第5行

prenom EMPLOYEES.FIRST_NAME%type;

和SQL开发人员说:" Erreur(34,4):PLS-00103:遇到符号" PRENOM"在期待以下其中一项时:语言"

我按照了如何使用本网站的软件包(https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6006.htm)的示例,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

您必须将其分解为包规范和包体。

所以..

规格:

create or replace package PKG_EMPLOYES as

function PRENOM_EMP (nom in EMPLOYEES.LAST_NAME%type)
    return EMPLOYEES.FIRST_NAME%type;

end PKG_EMPLOYES;
/

身体:

create or replace package body PKG_EMPLOYES as

function PRENOM_EMP (nom in EMPLOYEES.LAST_NAME%type)
    return EMPLOYEES.FIRST_NAME%type IS
    prenom EMPLOYEES.FIRST_NAME%type;
begin
    select FIRST_NAME
    into prenom
    FROM EMPLOYEES
    WHERE last_name = nom;
return prenom;

EXCEPTION
    when too_many_rows then
    return ('l ordre sql ramene plus d une ligne');

end PRENOM_EMP;

end PKG_EMPLOYES;
/