在使用Airflow mysql钩子调用python中具有out参数的存储过程时,我遇到了问题。
存储过程的签名是创建过程sp_stage_processdata(out p_status INT)
Src_cursor.execute(“调用sp_stage_processdata(%s);",(状态))
我搞错了
OperationalError:(1414年,例程sp_stage_processdata的OUT或INOUT参数1不是触发器前的变量或新伪变量)
在处理上述异常的过程中,发生了另一个异常:
我尝试移除参数,过程在python中执行得很好,所以没有什么问题。
由于版本问题,我无法使用cursor.callproc。
发布于 2020-03-11 10:00:45
在使用OUT时,需要向调用传递一个MySQL变量,并且不能直接传递一个值。
它应该看起来像:
CALL sp_stage_processdata(@p_status)如果您需要处理所传递的值,您可以有两个选项:
procedure
OUT更改为INOUT并使用SET @p_status,而不是将您的OUT称为使用IN和OUT的过程,如下所示:sp_stage_processdata(out p_status_out INT, IN p_status)
所以你可以这样称呼你的程序:
src_cursor.execute("CALL sp_stage_processdata(@p_status_out, %s);", (status,))
https://stackoverflow.com/questions/58654267
复制相似问题