2014-12-16 1 views
-4

다음 절차에 따라 사용자를 데이터베이스에 삽입 할 수 있습니다. 나는 4 개의 매개 변수와 1 개의 매개 변수를 사용합니다. out 매개 변수는 시퀀스로 채워집니다. 테이블 구조는 user_id와 4 개의 첫 번째 매개 변수의 이름입니다.PLS-00306 : 호출시 번호 또는 유형이 잘못됨

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', '[email protected]', '5'); 

, 나는 따옴표없이 수, 모든 wiithout 따옴표를 시도했다.

내가 뭘 잘못하고 있니? 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".. 잘못된 식별자

답변

2

프로 시저 이후 당신이 떨어져 모두에서 그것을 할 수있는 중, 그래서 당신은 당신의 프로 시저에서 값을 설정하지 않거나 당신은에 있습니다

declare 
    p_user_id int; 
begin 
    insert_user('user', 'password', '[email protected]', '5', p_user_id); 
end; 

주 : out 변수, 다섯 번째 변수를 제공 한 것은 out 값을 얻을 수 귀하의 절차에서 설정하십시오.

+1

바로 그 자리에 있습니다. – Rahul

+0

빠른 응답을 보내 주셔서 감사합니다! 그것은 효과가 있었고, 방아쇠가 맞으면 효과가있었습니다. p_user_id를 채우기 위해 내 방아쇠에서 실수로 나를 도울 수 있습니까? –

+0

그래도 내 방아쇠를 당겨 도울 수 있겠 니? 미리 감사드립니다! 그 동안 나는 emp_id가 다른 테이블에 존재하는지 확인하는 부분을 잘라내어 new.user_id를 정의해야한다고 말했습니다. –

관련 문제