文件首頁
MySQL Connector/Python 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 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])