2014-06-28 66 views
0

比如我有一個PL/SQL存儲存儲的PL/SQL函數

CREATE OR REPLACE PROCEDURE number(test in NUMBER) 
........ 
// rest of code 

是不可能的,我不想運行此執行

execute number(2); 

我想與運行

select * from number(2); 

是不可能用select語句運行存儲的pl/sql腳本來調用函數而不是執行?

+0

如果你想從數字中得到輸出,那麼1)數字必須被定義爲一個函數,2)而不是使用select語句,你應該簡單地使用一個賦值,如'x:= number(2 );'。 –

+0

@josephB 這只是一個帶參數的例子。 但我想使用存儲的PL/SQL作爲我想要的問題。然後使用select輸出它 – user3664490

+1

您不能使用SELECT語句從存儲過程中進行選擇。請參考http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10002.htm –

回答

3

您不能從SQL執行PROCEDURE;但是,您可以可以從SQL執行功能。

首先,重新定義數字作爲一個函數:

CREATE OR REPLACE FUNCTION NUMBER(pTest IN NUMBER) RETURN NUMBER IS 
    someValue NUMBER := pTest * 100; 
BEGIN 
    -- whatever 
    RETURN someValue; 
END; 

然後從SELECT語句執行它

SELECT NUMBER(2) FROM DUAL; 

分享和享受。

+0

只是問。如果我沒有退貨條款。我可以從SELECT語句執行它嗎? – user3664490

+0

我不確定如果你有一個沒有RETURN語句的函數,PL/SQL會做什麼。我相信它會發出編譯時警告,但請嘗試一下。 –

+0

@ user36 - 其他數據庫,是的,但不是Oracle – Hambone