2012-01-24 103 views
0
選擇查詢

我在Oracle 11g中使用select語句在存儲過程中xe.But的錯誤顯示爲錯誤在甲骨文

pls-00428-an INTO clause is expected with select statement 

我只是不明白的error.When我搜索我發現了在pl/sql中需要一個into子句。我使用toad.But當我使用sql編輯器時,同樣的錯誤正在顯示。

這裏是我的程序

CREATE OR REPLACE PROCEDURE ACTSINFO.sp_Get_WorkDetails 
IS 
BEGIN 
select * from workdetails; 
END sp_Get_WorkDetails; 

回答

2

您正在嘗試寫錯誤語法或不當使用SELECT語句。您必須創建cursor或使用SELECT .. INTO語法將標量值設置爲局部變量。

+0

I」 m不熟悉oracle。可以請你演示如何寫程序select..into關於上述過程的語法 – ksg

+0

@ksg - 看看帖子。我已經粘貼了oracle文檔鏈接。 – adatapost

+0

這裏的問題是我想以datatable的形式獲取所有的數據。如果我寫入select .. into語句我可以獲得數據表的所有數據 – ksg

3

Oracle與Microsoft SQL Server不同,因此從過程(或函數)返回結果集也不同。

你在找什麼是「管道表功能」。

請參考手冊的說明和示例:

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/tuning.htm#i53109

下面是從其他網站的一些例子:

http://www.oracle-developer.net/display.php?id=207
http://www.oracle-base.com/articles/misc/PipelinedTableFunctions.php
http://psoug.org/reference/pipelined.html

+0

引用光標也可以完成這項工作嗎? – Sathya

+0

@Sathy:是的,但是我發現一個表函數更容易處理,因爲您可以簡單地運行select * from table(my_function())'。並不是所有的編程語言都能很好地處理引用遊標 –

+0

確實,想聽聽你爲什麼要使用引用遊標的流水線函數的想法。謝謝! – Sathya