Функция pl sql add добавляет зарплаты сотрудников - PullRequest
0 голосов
/ 25 мая 2020

Мне нужна помощь !! Я хочу добавить зарплаты сотрудников определенного c отдела с помощью функции, но получаю сообщение об ошибке: «Число, указанное при точной выборке, меньше возвращаемых строк».

CREATE OR REPLACE FUNCTION SUMAR_SALARIOS (i NUMBER) RETURN NUMBER IS resultado NUMBER; BEGIN resultado := resultado + i; RETURN(resultado);
END SUMAR_SALARIOS; / SET SERVEROUTPUT ON SET VERIFY OFF
SET ECHO OFF ACCEPT codigo PROMPT ”Introduce el codigo de departamento” DECLARE
salario_ employees.salary%TYPE;   
codigo_dep number;
BEGIN
codigo_dep := &codigo; 
SELECT salary INTO salario_
FROM employees WHERE department_id = codigo_dep;
DBMS_OUTPUT.PUT_LINE(SUMAR_SALARIOS(salario_));

END;
/
UNDEFINE codigo`

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Ваш запрос SELECT salary INTO salario_ FROM employees WHERE department_id = codigo_dep возвращает более одной строки, поэтому вы получили ошибку. Если вы хотите получить сумму зарплат всех сотрудников в конкретном отделе, используйте следующий запрос:

SELECT sum(salary) INTO salario_ FROM employees WHERE department_id = codigo_dep
0 голосов
/ 26 мая 2020

Можно запустить примерно так:

set serveroutput on
SET VERIFY OFF
SET ECHO OFF 
ACCEPT codigo_dep NUMBER PROMPT "Introduce el codigo de departamento"

declare
    sumar_salarios number;
begin
    SELECT sum(salary) INTO sumar_salarios
    FROM mwp_alexs_1.employees WHERE department_id = &codigo_dep;

    dbms_output.put_line('sumar_salarios: '||sumar_salarios);
end;
/
...