微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个函数来使用 pl/sql 函数从表中打印员工所有工资、最高工资和最低工资的总和

如何解决如何创建一个函数来使用 pl/sql 函数从表中打印员工所有工资、最高工资和最低工资的总和

下面是我用来将值存储在 varray 中并最终返回 varray 的代码。但是我在第 12 行遇到一个错误提示“行/列:12/8 pls-00103:在预期以下情况之一时遇到符号“EMP_TYPE”: :=。 (@%;" 我需要做哪些改进?

create or replace type emp_type AS VARRAY(25) OF VARCHAR(10);
/

create or replace function emp_sal
return emp_type
is 
  emp emp_type := emp_type();
  l_salary number(10);
  maxim number(10);
  minim number(10);
BEGIN
   SELECT sum(salary) INTO l_salary FROM Employee8_43;
   SELECT max(salary) INTO maxim FROM Employee8_43;
   SELECT min(salary) INTO minim FROM Employee8_43;
   emp emp_type := emp_type(l_salary,maxim,minim);
  return emp;
END;

解决方法

你很接近;可惜您没有阅读 Oracle 告诉您的内容。

行/列:12/8 PLS-00103:在期待......时遇到符号“EMP_TYPE”

它从字面上告诉你需要知道的一切:行号、列号,以及它发现了什么但期望得到其他东西。

这个:

emp emp_type := emp_type(l_salary,maxim,minim);

应该

emp          := emp_type(l_salary,minim);

所以:

SQL> create or replace type emp_type as varray(25) of varchar(10);
  2  /

Type created.

SQL> create or replace function emp_sal
  2  return emp_type
  3  is
  4    emp emp_type := emp_type();
  5    l_salary number(10);
  6    maxim number(10);
  7    minim number(10);
  8  begin
  9     select sum(salary) into l_salary from employee8_43;
 10     select max(salary) into maxim from employee8_43;
 11     select min(salary) into minim from employee8_43;
 12     emp := emp_type(l_salary,minim);                --> this is line #12
 13    return emp;
 14  end;
 15  /

Function created.

SQL> select emp_sal from dual;

EMP_SAL
-------------------------------------------------------------------------
EMP_TYPE('29025','5000','800')

SQL>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。