2014-06-28 36 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