2012-04-20 7 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

Функция ... без возврата ... это процедура. Дон ... без дыры ... датский. –

ответ

10

Oracle PL функции/SQL MUST есть возвращение. Если вы объявите свою подпрограмму в качестве процедуры, то она не даст вам ошибок, если ей не хватает возврата (процедуры не могут получить).

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

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

Процедуры CAN имеют оператор возврата. Вы не можете вернуть значение, и это не требуется, но вы можете использовать RETURN в своей процедуре. – DCookie

+1

@DCookie: Итак, что делает «ВОЗВРАЩАЕТСЯ?» В процедуре? Разве это просто прекращает выполнение его процедуры прямо там? – FrustratedWithFormsDesigner

+2

Он покидает процедуру и возвращает вызывающему абоненту. – DCookie

4

По определению функция возвращает значение, поэтому у вас должен быть оператор RETURN. Посмотрите на syntax definition for a function в документации Oracle. RETURN не является вариантом.

Я даже не уверен, почему вы хотели бы это сделать.

Смежные вопросы