我有如下签名的db包方法
PROCEDURE p_add_rate_tables (p_in IN OUT BLOB, p_message IN OUT VARCHAR2);现在,为了传递params,我从node-oracledb传递了以下代码
const mergedTrunks = trunks.map(t =>
`["${t.xxx1}", "${t.xxx2}", "${t.xxx3}"]`
).join(', ');
const buffer = Buffer.from(`[${mergedTrunks}]`);
const bindvars = {
p_in: {val: buffer, type: oracledb.BUFFER, dir: oracledb.BIND_INOUT},
p_message: {type: oracledb.STRING, dir: oracledb.BIND_INOUT}
};
return new Promise((resolve, reject) => {
connection.execute(
`
begin
${config.database}.pkg_trunks.p_add_rate_tables (:p_in, :p_message);
commit;
end;`,
bindvars)但是,无论我做什么以及我如何处理参数-在数据库端,它们不能被正确地解析回来-我不明白为什么在数据库上,或者至少我们的数据库人员不能。
这不是构造问题-因为如果我将实际的字符串放入oracle utl_raw.cast_to_raw中-那么一切都会完美地工作。
想法?
https://stackoverflow.com/questions/44648004
复制相似问题