2011-05-17 53 views
11

中的程序中選擇聲明對於問這個問題感到抱歉,但這是因爲以前給出的答案都不足以讓我理解。我想寫一個存儲過程返回一個table.As所有列的廣告HOD查詢我只是寫在Oracle

SELECT * FROM EMPLOYEES 

但在這裏,我得到它提示我一個錯誤提供INTO條款,我不理解爲什麼以及如何。有人解釋我將如何做,無論是在上述情況下,還是當我只想返回一列值(多行)時。

+0

請顯示您嘗試的代碼,確切的錯誤,並閱讀pl/sql文檔。 – Mat 2011-05-17 10:59:37

回答

15

人與SQL Server的背景來寫返回整個查詢結果,所以,嘗試寫PL/SQL程序是這樣的存儲過程:

procedure get_emps is 
begin 
    -- this will NOT work! 
    select * from emp; 
end; 

可惜這不是那麼簡單。大概在PL/SQL中最接近的是返回一個引用光標的功能:

function get_emps return sys_refcursor is 
    rc sys_refcursor; 
begin 
    open rc for 
     select * from emp; 
    return rc; 
end; 

你可以從調用程序像這樣調用這個:

declare 
    cur sys_refcursor; 
    emp_rec emp%rowtype; 
begin 
    cur := get_emps; 
    loop 
     fetch cur into emp_rec; 
     exit when cur%notfound; 
    end loop; 
    close cur; 
end; 

或SQL另外,你可以這樣做:

var rc refcursor 
:rc := get_emps; 
print rc 
+0

謝謝Tony.I知道了。 – 2011-05-17 11:15:08

+0

親愛的託尼,我會同時投票並接受你的回答,如果你能告訴我它是如何完成的 – 2011-05-17 12:44:28

+2

怎麼做?對不起,我拿着「謝謝託尼。我明白了」意思是你完全明白我的答案。你不明白什麼? – 2011-05-17 12:47:15