【发布时间】:2022-01-20 08:16:57
【问题描述】:
我有存储过程,里面有很多输出变量。所以我这样调用存储过程:
export const infoHR3 = async () => {
try {
const sql =
`
Declare
ln_order_qty NUMBER;
ln_in_proc_qty_hr NUMBER;
ln_procd_hr_mass NUMBER;
ln_in_proc_qty NUMBER;
ln_wip NUMBER;
ln_qa NUMBER;
ln_packing NUMBER;
ln_dispatchable_qty NUMBER;
ln_despatched_qty NUMBER;
ln_finished_qty NUMBER;
ln_balance_qty NUMBER;
ln_bal_disp_qty NUMBER;
BEGIN
CRMDBA.C1DVX007(
'9514593782',
'1',
1,
ln_order_qty,
ln_in_proc_qty_hr,
ln_procd_hr_mass,
ln_in_proc_qty,
ln_wip,
ln_qa,
ln_packing,
ln_dispatchable_qty,
ln_despatched_qty,
ln_finished_qty,
ln_balance_qty,
ln_bal_disp_qty
);
dbms_output.put_line(ln_order_qty);
END; `;
return await query(sql);
} catch (error) {
console.log(error);
throw new Error.InternalServerError("Error!");
}
};
这是模型:
function getinfoHR3Table() {
return infoHR3();
}
export const ProcessModel = {
getProcess,
getReason,
getinfoHR1Table,
getinfoHR2Table,
getinfoCR1Table,
getinfoCR2Table,
getinfoHR3Table
};
这是控制器:
export const getinfoHR3Table = async (req: Request, res: Response) => {
try {
const results: any = await ProcessModel.getinfoHR3Table();
return res.status(200).json(results);
} catch (error) {
return res.status(400).json(error);
}
};
问题是我在结果中得到了空白值。调用存储过程时如何提取变量并返回??
问题在于DBMS_OUTPUT.PUT_LINE 只是在数据库中打印行。该过程不返回任何可在后端使用的值。然而,它为异常值赋予了值。
如何从过程中提取这些异常变量以便在后端使用它们?
【问题讨论】:
-
请edit 包含minimal reproducible example 的问题:Node.js(我假设因为您在问题上标记了该代码)您用于调用程序的代码;以及
CREATE PROCEDURE声明的签名。 -
我已将您重复问题中的更新内容编辑为您的原始内容;请检查以确保详细信息准确无误(下次,请提供 minimal reproducible example 并从一开始就提供所有代码,不要打开重复的问题)。
-
好的,谢谢
-
您的 PL/SQL 过程不返回任何变量 - 没有 OUT 绑定。如果您想获得 DBMS_OUTPUT,请参阅 github.com/oracle/node-oracledb/tree/main/examples 中的两个 dbmsoutoput*.js 示例并阅读文档 oracle.github.io/node-oracledb/doc/api.html#dbmsoutput
标签: node.js oracle plsql oracle11g