比如我有一個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腳本來調用函數而不是執行?
比如我有一個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腳本來調用函數而不是執行?
您不能從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;
分享和享受。
只是問。如果我沒有退貨條款。我可以從SELECT語句執行它嗎? – user3664490
我不確定如果你有一個沒有RETURN語句的函數,PL/SQL會做什麼。我相信它會發出編譯時警告,但請嘗試一下。 –
@ user36 - 其他數據庫,是的,但不是Oracle – Hambone
如果你想從數字中得到輸出,那麼1)數字必須被定義爲一個函數,2)而不是使用select語句,你應該簡單地使用一個賦值,如'x:= number(2 );'。 –
@josephB 這只是一個帶參數的例子。 但我想使用存儲的PL/SQL作爲我想要的問題。然後使用select輸出它 – user3664490
您不能使用SELECT語句從存儲過程中進行選擇。請參考http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10002.htm –