2015-10-20 64 views
0

我是oracle的新手用戶,我創建了一個存儲過程來顯示錶中的數據,因爲我的教學過程需要它。起初,我跑我的查詢如下。如何在Oracle SQL Developer中創建包含「SELECT」的存儲過程?

Create or replace procedure p_ mostrar 
Is 
Begin 
Select ID_MODULO, NOMBRE, URL, ESTADO, ICONO FROM MODULO WHERE ESTADO=1 ; 
Commit; 
End p_mostrar; 

他拋出我下面的錯誤:

而且我認爲正確運行。但現在它不知道如何運行該程序。我提前感謝你,期待及時回覆。請記住,我正在使用Oracle SQL Developer進行學習。

回答

0

這應該工作:

var result refcursor 
execute p_ mostrar(:result) 
+1

請解釋一下這裏發生了什麼。 – vonbrand

0

當你正在處理SELECT語句存儲過程中,你需要包括INTO子句的select語句的值存儲在一個變量。試試這個

CREATE OR REPLACE PROCEDURE p_mostrar 
IS 

v_id_modulo modulo.id_modulo%TYPE; 
v_nombre modulo.nombre%TYPE; 
v_url  modulo.url%TYPE; 
v_estado modulo.estado%TYPE; 
v_icono  modulo.icono%TYPE; 

BEGIN 

SELECT id_modulo, nombre, url, estado, icono 
INTO v_id_modulo, v_nombre, v_url, v_estado, v_icono --needed to catch the values selected and store it to declared variables 
FROM modulo           
WHERE estado=1 ;          
Commit; -- i dont think this is necessary, you use commit statement only when you use DML statements to manage the changes made 

dbms_output.put_line(v_id_modulo||' '|| v_nombre||' '||v_url||' '||v_estado||' '||v_icono); --used to display the values stored in the variables 


END; 
相關問題