Мне нужна помощь о функциях plsql - PullRequest
0 голосов
/ 14 мая 2019

Я хочу выбрать сумму зарплаты, где employee_id меньше 200. А вот мой код.

declare 
  emp_id number;
  x number;
  function sum_max_salary (emp_id in number)    
    return number 
  is 
    v_result number;
  begin 
    select sum(salary) into v_result from employees 
     where employee_id<200;
    return v_result;
  end;
begin
  emp_id:=200;
  x:=sum_max_salary(emp_id);
  dbms_output.put_line(sum_max_salary);
end;

Приведенная выше процедура выдает мне ошибку:

ORA-06550: строка 16, столбец 22: PLS-00306: неверный номер или типы аргументов при вызове 'SUM_MAX_SALARY'

ORA-06550: строка 16, столбец 1: PL / SQL: оператор игнорируется 06550. 00000 - «строка% s, столбец% s: \ n% s» * Причина: обычно ошибка компиляции PL / SQL. * Действие: -

и мне нужна помощь, чтобы найти проблему.

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Если вы хотите просто выполнить SQL:

select sum(salary) 
from employees 
where employee_id<200;

Если вы хотите сделать это с PL / SQL

set servoutput on
declare 
emp_id number;
x number;
function sum_max_salary (emp_id in number)


return number 
is 
v_result number;
begin 
select sum(salary) into v_result from employees 
where employee_id<emp_id;
return v_result;
end;
begin
emp_id:=200;
x:=sum_max_salary(emp_id);
dbms_output.put_line(x);
end;
0 голосов
/ 14 мая 2019

проблема в линии

dbms_output.put_line(sum_max_salary);

вы, вероятно, хотите сделать

dbms_output.put_line(x);

x это результат вашей функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...