连接器和 API 手册 / 第 6 章 MySQL 连接器/Python 开发人员指南 / 6.9 连接器/Python API 参考 / 6.9.5 游标.MySQL游标类 /
6.9.5.2 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)
连接器/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])