Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Инструкция RETURN

Инструкция RETURN завершает обработку, которую выполняет функция, вызываемая SQL (в отличие от функции, вызываемой сервером), или хранимая процедура, и возвращает результирующее значение.

Некоторые разработчики вместо ключевого слова RETURN (стандарт SQL) используют RETURNS.


Синтаксис SQL 2003

RETURN возвращаемое_значение | NULL


Ключевые слова

возвращаемое _значение

Представляет собой значение, возвращаемое кодом процедуры. Может быть любым из разнообразных значений.

NULL

Функция завершает работу, не возвращая реального значения.


Общие правила

Инструкция RETURN используется в процедурном коде для завершения обработки. Например, можно создать пользовательскую функцию, которая принимает сложное и часто используемое CASE-выражение и при передаче ей параметра возвращает одно легкое для восприятия значение выражения.


Советы и хитрости программирования

Хотя инструкция RETURN считается в SQL отдельной командой, она сильно связана с инструкциями CREATE FUNCTION и CREATE PROCEDURE. Следовательно, инструкция RETURN почти всегда является встроенной в одну из этих команд. Чтобы получить более подробную информацию о реализации инструкции RETURN в контексте каждой из этих инструкций, обращайтесь к разделам этой книги, посвященным этим инструкциям, или к документации производителя.


DB2

В DB2 инструкция RETURN используется для выхода из подпрограммы и в процедуре для возврата целочисленного значения. В пользовательской функции RETURN возвращает значение, вычисленное функцией. Платформа DB2 также позволяет возвращать результаты на основе запроса, в соответствии со следующим синтаксисом.

RETURN [{выражение | NULL | WITH имя_таблицы(столбец [, …]) [AS (инструкция_SELЕСТ)]}] инструкция_SELЕСТ

Где:

выражение

Возвращает константу или переменную клиенту или вызвавшей программе.

NULL

Возвращает пустое значение того типа данных, который был указан в вызвавшей пользовательской функции или методе.

WITH имя_таблицы (столбец [, …])

Действует как стандартное табличное выражение (иными словами, как своего рода представление), где каждый столбец соответствует столбцу последующей инструкции SELECT.

AS (инструкция SELECT) инструкция SELECT

Указывается запись или записи, которые будет возвращать функция, содержащая данную инструкцию RETURN. Количество столбцов в записи (записях), возвращаемой второй инструкцией SELECT, должно совпадать с количеством столбцов в предложении WITH. Это предложение нельзя использовать в хранимых процедурах.

Если инструкция RETURN используется в процедуре, то значение выражения должно быть целочисленным, по к пользовательской функции это не относится. Предложения NULL и WITH столбец AS инструкция SELECT’можно использовать в пользовательских функциях и методах, но не в хранимых процедурах. Ниже приводится пример инструкции RETURN.

BEGIN
… код SQL…

GOTO ERROR JiANDlER
… код SQL.

SUCCESS: RETURN 0
ERROR HANDLER: RETURN -200
END;

Если вам нужно проверять значение, возвращаемое хранимой процедурой, в другой хранимой процедуре, используйте для этого инструкцию GET DIAGNOSTICS. За дополнительной информацией об инструкции GET DIAGNOSTICS обращайтесь к документации DB2.


MySQL

Не поддерживается. Весь процедурный код в MySQL пишется на С или С++. Для возврата значения вы можете использовать методы, принятые с С и С++.


Oracle

Платформа Oracle для инструкции RETURN поддерживает стандартный синтаксис ANSI, за исключением ключевого слова NULL (Oracle поддерживает возврат пустых значений, но не поддерживает здесь синтаксис ANSI). Платформа Oracle позволяет использовать предложение RETURN только в пользовательских функциях и пользовательских операторах. Возвращаемое значение не может в инструкции CREATE OPERATOR относиться к типам данных LONG, LONG RAW тн REF. Пользовательские функции PL/SQL полностью поддерживают булевы типы данных, но нельзя вызвать булеву пользовательскую функцию из инструкции SQL. Следовательно, просто применяйте для хранения булевых значений типы INT(О или 1) или VARCHAR (TRUE или FALSE).

В следующем примере создается функция. Эта функция возвращает значение, которое сохраняется в переменной proj_rev вызвавшего функцию сеанса.

CREATE FUNCTION project_revenue (project IN varchar2)
RETURN NUMBER AS proj_rev NUMBER(10.2);

BEGIN
SELECT
SUM(DECODE(action, ‘COMPLETED’, amount, 0) —
SUM(DECODE(action, ‘STARTED’, amount, 0) +
SUM(DECODE(action, ‘PAYMENT’, amount, 0)
INTO proj_rev
FROM construction_actions
WHERE project_name=project;

RETURN (proj_rev);
END;


PostgreSQL

Платформа PostgreSQL поддерживает для инструкции RETURN стандартный синтаксис ANSI, за исключением ключевого слова NULL.

RETURNS возвращаемое_значение | NULL

Платформа PostgreSQL позволяет определять пользовательские функции либо при помощи кода SQL, либо при помощи C/C++. (В настоящее время PostgreSQL не поддерживает хранимые процедуры, но вы можете сымитировать эту функциональность при помощи пользовательских функций.) В данном обсуждении нас интересуют только SQL функции.

Допустимые возвращаемые значения могут относиться к базовому типу, сложному типу, типу SETOF, модификатору OPAQUE или к тому же типу, что и существующий столбец. Модификатор типа SETOF используется для возврата инструкцией RETURNS не одного значения, а набора значений. Модификатор OPAQUE показывает, что инструкция RETURNS не возвращает значения. Модификатор OPAQUE можно использовать только в триггерах.


SQL Server

Платформа SQL Server поддерживает инструкцию RETURN, используя следующий синтаксис.

RETURN [возвращаемое_целое_значение]

Команда RETURN обычно используется в хранимых процедурах или пользовательских функциях. Эта команда приводит к немедленному и полному выходу из программы и при желании может возвращать при выходе целочисленное значение.

Процедуры SQL Server неявно возвращают ноль, если в определении процедуры нет инструкции RETURN. Любые команды, которые идут после инструкции RETURN, игнорируются.

В следующей функции инструкция RETURN возвращает целое число, представляющее собой вычисленное значение.

Источник