2015-07-12 53 views
0

如何編寫一個程序,供用戶給出部門編號,程序將顯示在該部門工作的那些僱員的列表。如何通過PL/SQL過程打印多行?

我的方法:

create or replace procedure p1(
    dno in number, 
    name out varchar2) 
is 
begin 
select ename 
    into name 
    from emp 
    where deptno=dno; 
end; 

PLSQL:

declare 
    dno emp.deptno%type:=:dept; 
    name emp.ename%type; 
begin 
    p1(dno,name); 
    dbms_output.put_line(name); 
end; 

但是,這是否顯示錯誤:

ORA-01422: exact fetch returns more than requested number of rows 

我如何通過程序打印多個值嗎?

+0

您需要使用遊標。 – OldProgrammer

+0

我試過了,但我不知道在程序中使用光標的確切方法。 –

+0

所有你需要知道的:http://www.oracle.com/technetwork/issue-archive/2013/13-mar/o23plsql-1906474.html閱讀並嘗試,如果你仍然沒有得到它,來背部! :) –

回答

0

我還沒有試過你的代碼,但你看到要調用過程p1(dno,name);並在其中插入名稱。
但是name只能輸出,因爲至少在你的程序中需要使用IN OUT

+0

在這個過程中 我希望那個用戶會給部門號。 ,程序將顯示在該部門工作的所有員工的姓名。 所以'IN OUT'在這裏不需要。 我需要使用遊標。 但我不知道在程序中使用光標的確切方法:) –