PLS-00306:调用中的参数数量或类型错误

时间:2014-12-16 12:42:49

标签: oracle plsql procedure

我已经将以下过程插入到数据库中。我使用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":无效标识符

1 个答案:

答案 0 :(得分:2)

由于您的程序有一个out变量,请为其提供第五个变量以获取out值:

declare
  p_user_id int;
begin
  insert_user('user', 'password', 'mail@mail.com', '5', p_user_id);
end;

注意:您没有在程序中设置该值,因此您可以将其取消,或者必须在程序中进行设置。