我已经将以下过程插入到数据库中。我使用4个参数和1个参数。 out参数用序列填充。 表结构是user_id和4个第一个参数的名称。
CREATE OR REPLACE PROCEDURE insert_user
(
P_USERNAME IN varchar2,
P_PASSWORD IN varchar2,
P_COMPANY_EMAIL IN varchar2,
P_EMPLOYEE_ID IN number,
P_USER_ID OUT int)
AS
BEGIN
INSERT INTO system_users.users(USERNAME, PASSWORD, COMPANY_EMAIL, EMP_ID)
VALUES
(P_USERNAME, P_PASSWORD, P_COMPANY_EMAIL, P_EMPLOYEE_ID);
dbms_output.put_line (P_USER_ID);
END;
当我调用该过程时,我得到的错误是我有错误的参数数量或类型。我这样称呼它:
insert_user('user', 'password', 'mail@mail.com', '5');
我试过用它开始和结束它,我已经尝试了没有引号的数字,所有的都没有引号。
我做错了什么?它可以与触发器没有填充user_id有关吗?
此致
文森特
编辑:JIC是触发器,这是触发器的代码。它工作,但我在代码中看到了一个障碍,所以我编辑了它。 FSR它说我试图找到的表(system_users.users)不存在(无效的识别符)
请帮助我!
create or replace trigger user_trig_bi
Before insert on system_users.users
for each row
begin
select user_seq.nextval
into new.user_ID
From dual
where exists (SELECT emp_id
from hrm_repo.employees
where hrm_repo.employees.emp_id = system_users.users.emp_id);
END;
我得到的错误是: 错误(7,55):PL / SQL:ORA-00904:" SYSTEM_USERS"。" USERS"。" EMP_ID":无效标识符
答案 0 :(得分:2)
由于您的程序有一个out
变量,请为其提供第五个变量以获取out
值:
declare
p_user_id int;
begin
insert_user('user', 'password', 'mail@mail.com', '5', p_user_id);
end;
注意:您没有在程序中设置该值,因此您可以将其取消,或者必须在程序中进行设置。