Oracle 如何创建一个函数,使用pl/sql函数从一个表中打印所有员工工资、最高工资和最低工资的总和
下面是我用来在varray中存储值并最终返回varray的代码。但我在第12行遇到一个错误,即“line/Col:12/8 PLS-00103:遇到符号“EMP_TYPE”,期望出现以下情况之一: := . ( @ % ;" 我需要做哪些改进Oracle 如何创建一个函数,使用pl/sql函数从一个表中打印所有员工工资、最高工资和最低工资的总和,oracle,plsql,varray,Oracle,Plsql,Varray,下面是我用来在varray中存储值并最终返回varray的代码。但我在第12行遇到一个错误,即“line/Col: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 em
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;
你很接近,可惜你没有读到甲骨文告诉你的 行/列:12/8 PLS-00103:在预期时遇到符号“EMP_类型” 它可以告诉你需要知道的一切:行号,列号,以及它发现了什么,但期望得到的其他东西 这: 应该是
emp := emp_type(l_salary,maxim,minim);
因此:
这可以简化为单一选择。“从员工8_43中选择总和(薪资)、最大值(薪资)、最小值(薪资)到l_薪资、最大值、最小值
emp := emp_type(l_salary,maxim,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,maxim,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>