【发布时间】:2019-04-05 15:07:04
【问题描述】:
所以我正在尝试调用我制作的程序。该过程已成功完成,但是,当我尝试插入值时,它告诉我我没有正确数量的参数。
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 时参数的数量或类型错误”谢谢
【问题讨论】:
-
您已将过程定义为采用 10 个参数,但您只提供了 7 个。
-
如何在程序中声明额外的 3?
标签: oracle stored-procedures plsql