5.2.4. Синтаксис команды CALLCALL sp_name([parameter[,…]])

5.2.4. Синтаксис команды CALLCALL sp_name([parameter[,…]])

Инструкция CALL вызывает процедуру, которая была определена предварительно, с помощью команды CREATE PROCEDURE.

CALL может передавать обратно значения к параметрам использования вызывающего оператора, которые объявлены как OUT или INOUT. Это также вернет число строк, на которые воздействовал запрос, это же значение программа пользователя может получать в уровне SQL, вызывая функцию ROW_COUNT() или из C API функцией mysql_affected_rows().

Чтобы вернуть значение из процедуры, использующей параметр OUT или INOUT, передайте параметр посредством переменной пользователя, и затем проверьте значение переменной после возврата из процедуры. Если Вы вызываете процедуру изнутри другой сохраненной процедуры или функции, Вы можете также передавать стандартный параметр или локальную стандартную переменную как параметр IN или INOUT. Для параметра INOUT инициализируйте значение перед его передачей процедуре. Следующая процедура имеет параметр OUT, который процедура устанавливает в текущую (актуальную) версию сервера, и значение INOUT, которое процедура увеличивает:

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)

BEGIN

# Set value of OUT parameter

SELECT VERSION() INTO ver_param;

# Increment value of INOUT parameter

SET incr_param = incr_param + 1;

END;

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

mysql> SET @increment = 10;

mysql> CALL p(@version, @increment);

mysql> SELECT @version, @increment;

+------------+------------+

| @version | @increment |

+------------+------------+

| 5.0.25-log | 11 |

+------------+------------+

Если Вы пишете программы на C, которые выполняют сохраненные процедуры с инструкцией SQL CALL, Вы должны установить флажок CLIENT_MULTI_RESULTS, когда Вы вызываете mysql_real_connect(), либо установить CLIENT_MULTI_STATEMENTS. Это потому, что каждый CALL возвращает результат, чтобы указать состояние обращения, в дополнение к любым наборам результатов, которые могли бы быть возвращены инструкциями, выполненными внутри процедуры. Чтобы обрабатывать результат инструкции CALL, используйте цикл, который вызывает mysql_next_result() чтобы определить, имеется ли большее количество результатов.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Синтаксис

Из книги Введение в Perl автора Маслов Владимир Викторович


Е.3.3 Синтаксис

Из книги Информационная технология ПРОЦЕСС СОЗДАНИЯ ДОКУМЕНТАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОГРАММНОГО СРЕДСТВА автора Автор неизвестен


48. Синтаксис ассемблера

Из книги Информатика и информационные технологии автора Цветкова А В

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


51. Синтаксис Active X

Из книги Программирование автора Козлова Ирина Сергеевна

51. Синтаксис Active X Для органов управления ActiveX попускать кавычки нельзя.CODEBASE = URLВ данном атрибуте пишется URL-адрес файла, который содержит вызываемый орган управления и доступный для получения с одного из серверов Интернета.CODETYPE = MIME-тип, TYPE = MIME-типДанные два


Синтаксис цикла

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Синтаксис цикла Синтаксис цикла непосредственно следует из предшествующих соображений, определяющих ингредиенты цикла. Он будет включать элементы, отмеченные как необходимые.[x]. Инвариант цикла inv - утверждение.[x]. Условие выхода exit, чья конъюнкция с inv дает желаемую


5.2.6. Синтаксис DECLARE

Из книги MySQL: руководство профессионала автора Паутов Алексей В

5.2.6. Синтаксис DECLARE Инструкция DECLARE используется, чтобы определить различные элементы, локальные для подпрограммы:Локальные переменные. Подробности в разделе "5.2.7. Переменные в сохраненных подпрограммах".Условия и драйверы. Подробности в разделе "5.2.8. Условия и драйверы


7.4.3 Сообщение Parameter Problem

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

7.4.3 Сообщение Parameter Problem ICMP-сообщение Parameter Problem используется для отчета об ошибках, не специфицированных в кодах других сообщений. Например, в полях вариантов может появиться неверная информация, не позволяющая правильно обработать датаграмму, в результате чего


23.2.4 Parameter Problem

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

23.2.4 Parameter Problem Сообщение Parameter Problem (проблема с параметрами) отправляет система, которая не может обработать пакет из-за одного из полей заголовка. Коды сообщения:0 Неправильное количество полей заголовка1 Нераспознанный тип в поле Next Header2 Нераспознанный вариант IPv6Формат


4.1. Синтаксис и семантика

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

4.1. Синтаксис и семантика Прежде чем двигаться дальше, введем базовые определения. Языком мы будем называть множество строк (в большинстве случаев это будет бесконечное множество). Каждое выражение (в некоторых источниках вместо "выражение" употребляются термины


Сокращенный синтаксис

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Сокращенный синтаксис Для образцов существует два правила сокращения осей:• child::childname может быть сокращено как childname;• attribute::childname может быть сокращено как @childname.В следующем списке перечислен ряд примеров образцов с сокращенным синтаксисом; в конце главы вы увидите


Синтаксис

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Синтаксис Синтаксис функции EXTRACT():EXTRACT (элемент FROM поле)элемент должен быть одним из допустимых элементов в типе данных поле. Не все элементы допустимы для всех типов данных дата/время. Тип данных элемента изменяется в соответствии с выделяемым элементом. Табл. 10.10


Синтаксис

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Синтаксис Если, будучи соединенным с базой данных, вы захотите ее удалить, используйте для этого оператор:DROP DATABASE;После удаления база данных не может быть восстановлена, следовательно:* будьте уверены, что вы действительно хотите, чтобы она была потеряна навсегда;*


Синтаксис

Из книги автора

Синтаксис Для всех версий Firebird синтаксис CREATE TRIGGER одинаков:CREATE TRIGGER имя FOR {таблица | просмотр}[ACTIVE | INACTIVE]{BEFORE | AFTER} {DELETE | INSERT | UPDATE}[POSITION число]AS <тело-триггера> ^<тело-триггера> = [<список-объявления-переменных>] <блок><список-объявления-переменных> = DECLARE VARIABLE


7.2. Синтаксис CSS

Из книги автора

7.2. Синтаксис CSS Теперь, когда вы имеете представление о том, как можно добавить таблицу стилей в HTML-документ, разберем синтаксис языка