2012-06-03 2 views
1

Oracle에서 프로 시저를 만들었지 만 실행하려고하면 오류가 발생합니다. 아래는 내가이 절차를 만들기 위해 복용하고있는 단계를 나열됩니다oracle 10g에서 프로 시저를 작성/호출하는 방법은 무엇입니까?

SQL> ed getuserinfo 

create or replace procedure getUserInfo 
    (p_username out Users.username%TYPE, 
     p_password out Users.password%TYPE) IS 
BEGIN 

    select username,password into p_username,p_password from users where username='yogi'; 

END; 
/


SQL> exec getuserinfo 
BEGIN getuserinfo; END; 

      * 
ERROR at line 1: 
ORA-06550: line 1, column 7: 
PLS-00201: identifier 'GETUSERINFO' must be declared 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

어떤 문제가 내가 그것을 어떻게 해결할 수 있습니까? 누구든지 나를 도울 수 있습니까?

답변

2

실제로 수행하지 않은 프로 시저를 만들어야합니다. 당신은 end 후 세미콜론이 필요하고 당신은 SQL에서 그것을 만드는 경우 * 게다가 당신은 SQL의 *을 알려 /를 추가 할 필요가 플러스 블록이 완료된다 :

create or replace procedure getUserInfo 
     (p_username out Users.username%TYPE, 
     p_password out Users.password%TYPE) IS 
BEGIN 

select username,password into p_username,p_password from users; 

END; 
/
show error 

그것은 항상 현명뿐만 이후 show error을 추가 잘 이해하면 모든 오류가 이해하기 쉬운 형식으로 콘솔에 반환됩니다.

1

절차를 호출 할 때 out 매개 변수를 지정해야합니다.

DECLARE 
    x Users.username%TYPE; 
    y Users.password%TYPE; 
BEGIN 
    getuserinfo(x, y); 
    DBMS_OUTPUT.PUT_LINE('username: ' || x || ', password: ' || y); 
END; 
2

실제로 프로 시저 작성 명령문을 실행 했습니까? "절차 생성"을 받았습니까? 메시지? 오라클이 귀하의 getuserinfo 절차를 알지 못한다는 사실은이 진술이 수행되지 않았다는 것을 나에게 알려줍니다.

2

프로 시저 호출 실수라고 생각합니다 !! 전화 번호는 다음과 같아야합니다.

SQL>var var1 varchar2(50); 
SQL>var var2 varchar2(50); 
SQL> exec getuserinfo(:var1, :var2); 
SQL> print var1, var2; 

Have Fun !!

관련 문제