10.5.2 MySQLCursor.callproc()方法

句法:

Press CTRL+C to copy
result_args = cursor.callproc(proc_name, args=())

此方法调用 proc_name参数命名的存储过程。参数序列必须为过程期望的 args每个参数包含一个条目。 callproc()返回输入序列的修改副本。输入参数保持不变。输出和输入/输出参数可以用新值替换。

存储过程生成的结果集会自动获取并存储为 MySQLCursorBuffered 实例。有关使用这些结果集的更多信息,请参阅 stored_results()

假设存储过程采用两个参数,将值相乘并返回乘积:

Press CTRL+C to copy
CREATE PROCEDURE multiply(IN pFac1 INT, IN pFac2 INT, OUT pProd INT) BEGIN SET pProd := pFac1 * pFac2; END;

以下示例显示了如何执行该 multiply()过程:

Press CTRL+C to copy
>>> 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()有这样的定义:

Press CTRL+C to copy
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参数的类型,请执行以下操作:

Press CTRL+C to copy
args = ('ham', 'eggs', (0, 'CHAR')) result_args = cursor.callproc('sp1', args) print(result_args[2])