2016-12-26 1 views
1
create or replace 
procedure find_emp_info (
    p_emp_info out emp%rowtype, 
    p_empno in emp.empno%type default 7839 
) 
is 
p_emp_info emp%rowtype; 
begin 
    select * into emp_info 
    from emp 
    where empno =p_empno; 
exception 
when no_data_fount then 
    dbms_output.put_line('enter employee number not exists'); 
when others then 
    dbms_output.put_line('ERROR OCCURS ') ; 
    RAISE_APPLICATION_ERROR (-20003,SQLCODE||CHR(10)||sqlerrm); 
end find_emp_info ; 
/

PLS-00410、Oracleプロシージャでは、%の行型のデータ型を使用することができます。これを取得していますなぜRECORD、TABLEまたは引数リスト内の重複フィールドは はたちが出てパラメータの

を許可されていません上記のコードのエラー

答えて

0

@Alexはあなたが除去することができる変数p_emp_infoローカルに宣言したように2個のエラーがあります。

使用している例外はno_data_fountです。これはno_data_foundである必要があります。

create or replace 
procedure find_emp_info (
    p_emp_info out emp%rowtype, 
    p_empno in emp.empno%type default 7839 
) 
is 
begin 
    select * into p_emp_info 
    from emp 
    where empno =p_empno; 
exception 
when no_data_found then 
    dbms_output.put_line('enter employee number not exists'); 
when others then 
    dbms_output.put_line('ERROR OCCURS ') ; 
    RAISE_APPLICATION_ERROR (-20003,SQLCODE||CHR(10)||sqlerrm); 
end find_emp_info ; 
/
1

p_emp_infoというローカル変数を宣言しましたが、同じ名前のoutパラメータがあります。

ローカル変数はまったく必要ありません。その宣言を削除するだけです。

create or replace 
procedure find_emp_info (
    p_emp_info out emp%rowtype, 
    p_empno in emp.empno%type default 7839 
) 
is 
begin 
    select * into emp_info 
    from emp 
... 
+0

ありがとうAlex poole – shashank

関連する問題