Stored procedures 操作错误:(例程';存储过程名称';的1414、';OUT或INOUT参数1在触发器';之前不是变量或新的伪变量)
在python中使用mysqlhook调用带out参数的存储过程时遇到问题 存储过程的签名是 创建过程Stored procedures 操作错误:(例程';存储过程名称';的1414、';OUT或INOUT参数1在触发器';之前不是变量或新的伪变量),stored-procedures,parameter-passing,airflow,mysql-python,out,Stored Procedures,Parameter Passing,Airflow,Mysql Python,Out,在python中使用mysqlhook调用带out参数的存储过程时遇到问题 存储过程的签名是 创建过程sp\u stage\u processdata(out p\u status INT) src_cursor.execute(“调用sp_stage_processdata(%s);”,(状态,) 我犯了一个错误 操作错误:(1414,'例程sp_stage_processdata的OUT或INOUT参数1不是变量或触发器前的新伪变量') 在处理上述异常期间,发生了另一个异常: 我尝试删除参数
sp\u stage\u processdata
(out p\u status INT)
src_cursor.execute(“调用sp_stage_processdata(%s);”,(状态,)
我犯了一个错误
操作错误:(1414,'例程sp_stage_processdata的OUT或INOUT参数1不是变量或触发器前的新伪变量')
在处理上述异常期间,发生了另一个异常:
我尝试删除参数,并且该过程在python中执行良好,所以并没有什么问题
由于版本问题,我无法使用cursor.callproc。使用
OUT
时,需要向调用传递MySQL变量,不能直接传递值
它应该看起来像:
CALL sp_stage_processdata(@p_status)
如果需要处理传递的值,可以有2个选项:
OUT
更改为INOUT
,然后使用SET@p_status
调用您的过程IN
和OUT
,如下所示:
sp\u stage\u processdata(out p\u status\u out INT,IN p\u status)
因此,您可以这样调用您的过程:
src_cursor.execute(“调用sp_stage_processdata(@p_status_out,%s);”,(status,)