2012-04-20 79 views
4

正如标题所说,是否有可能从PL/SQL函数中不返回任何内容?Oracle:可能从PL/SQL函数中不返回任何内容?

我的功能如下,当我离开了回报,我得到错误:

create or replace 
FUNCTION DeleteAttributes 
(code IN varchar2) 
CURSOR c_attributes = SELECT ... 

BEGIN 
    FOR attribute_record IN c_attributes 
    LOOP 
     ... 
    END LOOP; 
END; 
+7

函数...没有返回...是一个过程。甜甜圈......没有洞......是丹麦人。 – 2012-04-21 03:11:31

回答

10

的Oracle PL/SQL函数必须有回报。如果你宣布你的子程序作为一个程序,那么就不会缺乏回报,当它给你的错误(程序不能有回报)。

create or replace 
PROCEDURE DeleteAttributes 
(code IN varchar2) 
CURSOR c_attributes = SELECT ... 

BEGIN 
    FOR attribute_record IN c_attributes 
    LOOP 
     ... 
    END LOOP; 
END; 
+9

程序可以有一个return语句。你不能返回一个值,这不是必需的,但你可以在你的程序中使用RETURN。 – DCookie 2012-04-20 21:43:12

+1

@DCookie:那么'RETURN;'在程序中做了什么?它刚刚结束了它在那里的执行过程吗? – FrustratedWithFormsDesigner 2012-04-21 16:07:40

+2

它离开程序并返回给调用者。 – DCookie 2012-04-22 01:17:51

4

根据定义,函数返回一个值,所以你必须有一个RETURN语句。查看Oracle文档中的syntax definition for a function。 RETURN不是一个选项。

我甚至不确定你为什么要这样做。