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.