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