如何在Javascript中接收MySQL存储过程OUT参数作为变量



免责声明;我的背景是C#,所以我对JavaScript并不熟悉,只是粗略地了解一下;然而,我今天和我们的一位开发人员一起查看了一些代码,他收到了一些奇怪的返回结果与预先存在的返回结果"合并"的行为。我非常惊讶地看到,每一个调用存储过程的JavaScript示例都使用MySQL端的全局变量来存储out参数!这让我大吃一惊,相对于编写代码来说,IMO是一个很大的"不"。举下面的例子:

exports.updateRasSql = 'CALL update_ras_data(?, ?, @out_result, @out_result_value);

归根结底,我们不想将OUT参数变量分配给MySQL全局变量。我们希望OUT值被分配给内部JavaScript变量,但任何时候我们尝试这样做(使用var或let作为定义器(,MySQL都会返回:

Error: ER_SP_NOT_VAR_ARG: OUT or INOUT argument 3 for routine empowercrm_main.update_ras_data is not a variable or NEW pseudo-variable in BEFORE trigger

所以问题来了:我们如何从Node/JavaScript调用MySQL存储过程,并让它将OUT变量返回到内部JavaScript变量,而不是MySQL全局变量

您应该返回一个结果集(在过程中进行查询(,而不是使用OUT-变量。获取OUT变量值的唯一方法是在执行过程后选择它。处理结果集更容易。

最新更新