2013-11-22 5 views
0
Create or replace procedure disp(pEMPLASTNAME varchar2) 
IS 
Row employee%rowtype; 
begin 
select * into row from employee where EMPLASTNAME=’pEMPLASTNAME’ ; 
dbms_output.put_line('Name: '||Row.EMPID||' '|| Row.EMPNAME); 
End; 
/

BEGIN 
disp(‘Mark’); 
END; 
/

Здравствуйте, я пытаюсь отобразить данные из таблицы, используя хранимые процедуры. Последнее имя передается в качестве параметра через хранимую процедуру, а при его выполнении хранимая процедура должна отображать все строки, которые имеют фамилию. Вот ошибка, которую я получаю; Помощь PLS! : -Отображение данных с помощью хранимой процедуры

SQL> BEGIN 
disp('Mark'); 
END; 
/
BEGIN 
* 
ERROR at line 1: 
ORA-01403: no data found 
ORA-06512: at "TEST.DISP", line 5 
ORA-06512: at line 2 

ответ

1

Нет необходимости в кавычки:

select * into row from employee where EMPLASTNAME=pEMPLASTNAME; 

Однако, вы не можете иметь какие-либо данные для значения этой переменной в любом случае (т.е. один день, это может случиться) Вот почему я рекомендую вам (см. раздел EXCEPTION)

pd: рекомендуется не использовать зарезервированные слова, такие как row. Я рекомендую вам назвать свою переменную другим способом.

+0

Спасибо, но теперь я получаю эту ошибку: - –

+0

ORA-01422: точная выборка возвращает более чем запрошенное количество строк –

+0

@Nidhin_toms, это означает, что более одного сотрудника имеют свою фамилию, например «Марк». Этот блок pl/sql позволяет возвращать только одну строку. – Sebas

1

Я хотел бы предложить использовать курсор, чтобы выбрать все строки, а затем перекручивание через курсор, чтобы напечатать результат:

Create or replace procedure disp(pEMPLASTNAME varchar2) 
IS 
Cursor row_select is 
    select EMPID, EMPNAME from employee where emplastname = pEMPLASTNAME; 
-- and whatever columns you need to print, using * isn't good practice 

begin 
for item in row_select loop 
    dbms_output.put_line('Name: '||item.EMPID||' '|| item.EMPNAME); 
end loop; 
End; 
/

BEGIN 
disp(‘Mark’); 
END; 
/
+0

Большое спасибо за ваш ввод Armunin! –

Смежные вопросы