2012-11-01 22 views
0
create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) AS 
    CURSOR c1 IS 
    select Name,Rollno,Section 
     from emp; 
BEGIN 
    Open c1; 
    fetch c1 into outname,outroll; 

在遊標的3列中,有可能只使用FETCH抓取兩列,就像我上面所做的那樣?如何使用FETCH獲取遊標中的列?

回答

2

你在11g上。您不需要定義變量或遊標。讓Oracle爲你付出沉重的代價。

create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) 
AS 
BEGIN 
    select Name,Rollno 
    into outname,outroll 
    from emp; 
END; 

如果EMP有多行,這會引發錯誤。有很多方法可以解決這個問題。例如,使用ROWNUM來人爲地限制結果集。或者將EMP_ID作爲輸入參數來選擇所需的記錄。這取決於這是玩具的例子還是真實世界API的開始。


「如何使用ROWNUM在上面如?」

ROWNUM是一個僞列,覆蓋了in the documentation。但是,爲了完整起見,我們可以使用它來限制這樣的結果集:

select Name,Rollno 
from emp 
where rownum <= 1; 
+0

如何在上面使用ROWNUM?請解釋先生 – 1001

相關問題