大家帮忙看看,为什么这样创建包体,会出错package body "sara.SALPKG" has errors?调用包体里的函数时,提示PL/SQL: could not find program unit
-------------------------------------------------------------------
create or replace package salpkg as
type salset is table of emp.sal%type;
function emp_avgsal(salary in salset)return emp.sal%type;
end salpkg;
/create or replace package body salpkg as
function emp_avgsal(salary in salset)return emp.sal%type is
begin
avgsal emp.sal%type :=0;
for i in salary.first..salary.last
loop
avgsal :=avgsal + salary(i);
end loop;
avgsal :=avgsal / salary.count;
return avgsal;
end;
end;
/set serveroutput on
declare
cursor sal_cur is select sal from emp;
empsal salpkg.salset;
begin
open sal_cur;
fetch sal_cur
bulk collect into empsal;
dbms_output.put_line(salpkg.emp_avgsal(salary => empsal));
close sal_cur;
end;
/
-------------------------------------------------------------------
create or replace package salpkg as
type salset is table of emp.sal%type;
function emp_avgsal(salary in salset)return emp.sal%type;
end salpkg;
/create or replace package body salpkg as
function emp_avgsal(salary in salset)return emp.sal%type is
begin
avgsal emp.sal%type :=0;
for i in salary.first..salary.last
loop
avgsal :=avgsal + salary(i);
end loop;
avgsal :=avgsal / salary.count;
return avgsal;
end;
end;
/set serveroutput on
declare
cursor sal_cur is select sal from emp;
empsal salpkg.salset;
begin
open sal_cur;
fetch sal_cur
bulk collect into empsal;
dbms_output.put_line(salpkg.emp_avgsal(salary => empsal));
close sal_cur;
end;
/
看看具体的错误信息
type salset is table of emp.sal%type;
function emp_avgsal(salary in salset)return emp.sal%type;
end salpkg;
create or replace package body salpkg is
function emp_avgsal(salary in salset)return emp.sal%type is avgsal emp.sal%type;
begin
avgsal :=0;
for i in salary.first..salary.last
loop
avgsal :=avgsal + salary(i);
end loop;
avgsal :=avgsal / salary.count;
return avgsal;
end;
end salpkg;set serveroutput on
SQL> declare
2 cursor sal_cur is select sal from emp;
3 empsal salpkg.salset;
4 begin
5 open sal_cur;
6 fetch sal_cur
7 bulk collect into empsal;
8 dbms_output.put_line(salpkg.emp_avgsal(salary => empsal));
9 close sal_cur;
10 end;
11 /
2500
PL/SQL procedure successfully completed
你的函数的return语句有问题 return + 返回类型 + is +变量名 + 返回类型