2010-01-22 64 views
7

我在oracle中有一個存儲過程,並希望從SQLPlus進行測試。如何從SQL Plus執行存儲過程?

如果我使用

execute my_stored_proc (-1,2,0.01) 

我得到這個錯誤

PLS-00306: wrong number or types of arguments in call to my_stored_proc 

爲PROC剛開始是這個

create or replace PROCEDURE my_stored_proc 
(a IN NUMBER, 
    b IN NUMBER, 
    c IN NUMBER, 
    z out NUMBER 
) AS .... 

我需要爲出提供一個變種參數,是如此?我想:

var z NUMBER; 

但是當我嘗試運行PROC

execute my_stored_proc (-1,2,0.01,z) 
PLS-00201: identifier 'Z' must be declared 

而且當我在SQL-開發它給我的使用情況,並顯示出相反的順序輸入收到此錯誤,那就是:

execute my_stored_proc(z number,c number,b number,a number); 

你以相反的順序提供它們或者是說只是一些與SQL-開發

我沒有寫這個程序,我通常不會處理它們,所以我可能會錯過一些明顯的東西。

感謝

回答

14

你有兩個選擇,一個PL/SQL塊或SQL * Plus綁定變量:

var z number 

execute my_stored_proc (-1,2,0.01,:z) 

print z 
-1

你忘了將z作爲一個綁定變量。

以下EXECUTE命令運行引用存儲過程的PL/SQL語句:

SQL> EXECUTE - 
> :Z := EMP_SALE.HIRE('JACK','MANAGER','JONES',2990,'SALES') 

注意存儲過程返回的值正在迴歸到位:Z

+3

-1的功能用在表達式中,程序不能。 – 2010-01-25 02:59:38