文档主页
MySQL Connector/Python 开发者指南
相关文档 下载本手册
PDF (US Ltr) - 0.7Mb
PDF (A4) - 0.7Mb


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])