2016-12-26 2 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: дублирование полей в RECORD, таблицы или списка аргументов не разрешеномы можем использовать тип данных% ROWTYPE, в процедуре оракула, для выходного параметра

почему я получаю это ошибка в приведенном выше коде

ответ

0

Есть две ошибки, как @Alex упоминалось вы объявить локальную переменную p_emp_info, которая может быть удалена.

Исключение составляет 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