Spec-Zone.ru › MySQL Connectors 1.0

10.5.5 Метод MySQLCursor.callproc()

Синтаксис:

result_args = cursor.callproc(proc_name, args=())

Этот метод вызывает хранимую процедуру, имя которой указано в аргументе proc_name. Последовательность параметров args должна содержать по одному элементу для каждого аргумента, ожидаемого процедурой. callproc() возвращает изменённую копию входной последовательности. Входные параметры остаются неизменными. Выходные и входно-выходные параметры могут быть заменены новыми значениями.

Результаты наборов, созданные хранимой процедурой, автоматически извлекаются и сохраняются как экземпляры MySQLCursorBuffered. Дополнительную информацию об использовании этих наборов результатов см. в stored_results().

Предположим, что хранимая процедура принимает два параметра, перемножает их значения и возвращает произведение:

CREATE PROCEDURE multiply(IN pFac1 INT, IN pFac2 INT, OUT pProd INT)
BEGIN
  SET pProd := pFac1 * pFac2;
END;

Следующий пример демонстрирует, как выполнить процедуру multiply():

>>> args = (5, 6, 0) # 0 is to hold value of the OUT parameter pProd
>>> cursor.callproc('multiply', args)
('5', '6', 30L)

Connector/Python 1.2.1 и выше позволяет указывать типы параметров. Для этого укажите параметр как кортеж из двух элементов: значения параметра и его типа. Предположим, что процедура sp1() имеет следующее определение:

CREATE PROCEDURE sp1(IN pStr1 VARCHAR(20), IN pStr2 VARCHAR(20),
                     OUT pConCat VARCHAR(100))
BEGIN
  SET pConCat := CONCAT(pStr1, pStr2);
END;

Чтобы выполнить эту процедуру из Connector/Python, указав тип для параметра OUT, сделайте следующее:

args = ('ham', 'eggs', (0, 'CHAR'))
result_args = cursor.callproc('sp1', args)
print(result_args[2])

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-python-en/connector-python-api-mysqlcursor-callproc.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API