Итак, я пытаюсь вызвать процедуру, которую я сделал.Процедура была выполнена успешно, однако, когда я пытаюсь вставить значения, это говорит мне, что у меня нет нужного количества параметров.
CREATE OR REPLACE PROCEDURE insert_employee
(
p_employeeid IN employees.employeeid%TYPE,
p_employeename IN employees.employeename%TYPE,
p_phone IN employees.phone%TYPE,
p_jobid IN employees.jobid%TYPE,
p_salary IN employees.salary%TYPE,
p_managerid IN employees.managerid%TYPE,
p_departmentid IN employees.departmentid%TYPE,
jobid_cnt OUT INTEGER,
deptid_cnt OUT INTEGER,
empid_cnt OUT INTEGER
)
AS
BEGIN
IF p_employeeid IS NULL OR
p_employeename IS NULL OR
p_jobid IS NULL OR
p_salary < 0
THEN
RAISE VALUE_ERROR;
END IF;
SELECT count(*)
INTO jobid_cnt
FROM employees e
WHERE e.jobid = p_jobid;
IF jobid_cnt = 0 THEN -- there's no such job in the table
RAISE VALUE_ERROR;
END IF;
SELECT count(*)
INTO deptid_cnt
FROM employees e
WHERE e.departmentid = p_departmentid;
IF deptid_cnt = 0 THEN -- there's no such department in the table
RAISE VALUE_ERROR;
END IF;
SELECT count(*)
INTO empid_cnt
FROM employees e
WHERE e.employeeid = p_employeeid;
IF deptid_cnt > 0 THEN -- employee already exists within table
RAISE_APPLICATION_ERROR(-20001, 'Employee already exists');
END IF;
COMMIT;
END;
/
CALL insert_employee(109, 'Jack', '416 123 4567', 'FI_ACCOUNT', 7890.00, 104, 30);
Я ожидаю, что параметры OUT отличаются от параметров IN,но я могу ошибатьсяОшибка становится «PLS-00306: неверный номер или типы аргументов при вызове INSERT_EMPLOYEE» Спасибо