2009-12-06 169 views
35

我正在使用oracle 10g express版本。它有一個很好的用戶界面開發人員。但是我正在執行存儲過程時遇到一些問題。如何執行oracle存儲過程?

步驟:

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end 

它創建成功。但是,當我執行:

execute temp_proc;

它顯示ORA-00900:無效的SQL語句

所以在這裏幫助需要

+1

這是有效的SQLPlus - 怎麼是你想運行呢? – 2009-12-06 05:26:14

+0

首先我選擇「Go To Database Home Page」,然後選擇Home> SQL> SQL Commands。然後創建過程,然後執行。 – FlintOff 2009-12-06 05:30:27

+0

你使用什麼軟件? – 2009-12-06 05:33:20

回答

51

Execute是在SQL * Plus語法..嘗試包裝你的電話在開始..這樣結束:

begin 
    temp_proc; 
end; 

(儘管傑弗裏說,這並不在APEX工作..但你想讓它在SQLDeveloper中運行..試試'運行'菜單)

+2

這完全適用於APEX。我剛剛檢查過。 – InamTaj 2014-05-21 17:22:24

-1

您是否嘗試過糾正語法這樣?:

create or replace procedure temp_proc AS 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 
+4

'IS'應該是正確的。 – Thorsten 2009-12-06 21:49:58

+1

我看到的是,您剛剛將IS更改爲AS,並在'end'關鍵字末尾添加了分號。雖然增加分號很好,但OP說彙編是成功的,所以不能成爲問題。問題在於OP沒有意識到如何執行在已接受的答案中已被正確解決的proc。所以這個答案是錯誤的。 – nanosoft 2017-03-15 14:18:12

3

Oracle 10g Express Edition內置了Oracle Application Express(Apex)。您正在SQL命令窗口中運行該窗口,該窗口不支持SQL * Plus語法。

這並不重要,因爲(因爲您已經發現)BEGIN ... END語法在Apex中有效。

2

'是'和'as'都是有效的語法。默認情況下,輸出爲已禁用。嘗試的過程,也使輸出...

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.ENABLE(1000000); 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 

......並把它在PLSQL塊...

begin 
    temp_proc; 
end; 

...如SQL是非過程。

0
begin 
    temp_proc; 
end; 

我想提醒你,「temp_proc」必須是同義詞...