Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何创建一个函数,使用pl/sql函数从一个表中打印所有员工工资、最高工资和最低工资的总和_Oracle_Plsql_Varray - Fatal编程技术网

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

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

下面是我用来在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 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>