中的程序中選擇聲明對於問這個問題感到抱歉,但這是因爲以前給出的答案都不足以讓我理解。我想寫一個存儲過程返回一個table.As所有列的廣告HOD查詢我只是寫在Oracle
SELECT * FROM EMPLOYEES
但在這裏,我得到它提示我一個錯誤提供INTO
條款,我不理解爲什麼以及如何。有人解釋我將如何做,無論是在上述情況下,還是當我只想返回一列值(多行)時。
中的程序中選擇聲明對於問這個問題感到抱歉,但這是因爲以前給出的答案都不足以讓我理解。我想寫一個存儲過程返回一個table.As所有列的廣告HOD查詢我只是寫在Oracle
SELECT * FROM EMPLOYEES
但在這裏,我得到它提示我一個錯誤提供INTO
條款,我不理解爲什麼以及如何。有人解釋我將如何做,無論是在上述情況下,還是當我只想返回一列值(多行)時。
人與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
謝謝Tony.I知道了。 – 2011-05-17 11:15:08
親愛的託尼,我會同時投票並接受你的回答,如果你能告訴我它是如何完成的 – 2011-05-17 12:44:28
怎麼做?對不起,我拿着「謝謝託尼。我明白了」意思是你完全明白我的答案。你不明白什麼? – 2011-05-17 12:47:15
請顯示您嘗試的代碼,確切的錯誤,並閱讀pl/sql文檔。 – Mat 2011-05-17 10:59:37