MySQL Connector/Python 发行说明
语法
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])