【发布时间】:2020-05-01 17:56:43
【问题描述】:
免责声明;我的背景是 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 全局变量?
【问题讨论】:
-
@nbk 有趣;因此该示例显示他使用 object.xx 作为接收方法;但我在其他任何地方都找不到这样的例子。您对此有更多详细信息吗?
-
不,我查看了一些搜索结果,这似乎可以理解且易于实施。但是寻找你自己,看看其他人写了什么。但是 javascript 支持多种类型,因此很容易理解和使用。如果程序有这样的返回,您也可以返回 3 或 4 个用户定义的变量或两个表。
标签: javascript mysql