创建程序包时出现符号错误 SQL 开发者
Symbol error while creating a package SQL developer
我的目标是为我创建的 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: Encountered the symbol "PRENOM" 当期望出现以下情况之一时:语言 "
我遵循了如何使用该网站 (https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6006.htm) 中的包的示例,但找不到解决方案。
您必须将其分解为包规范和包体。
所以..
规格:
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;
/
我的目标是为我创建的 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: Encountered the symbol "PRENOM" 当期望出现以下情况之一时:语言 "
我遵循了如何使用该网站 (https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6006.htm) 中的包的示例,但找不到解决方案。
您必须将其分解为包规范和包体。
所以..
规格:
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;
/