У меня есть следующий код, но он просто не работает. Я не понимаю, что случилось.
await connection.execute(
`UPDATE mytable SET WEIGHT = :WEIGHT
WHERE ITEM_ID = :ITEM_ID AND NAME = :NAME`
), Bindings[0],{autoCommit: true, outFormat : oracledb.OBJECT};
Где Bindings[0]:
{
ITEM_ID: 'dfghjkl',
WEIGHT: '10',
NAME: 'test'
}
Это дает следующую ошибку: Ошибка: ORA-01008: не все переменные привязаны
Пожалуйста помоги
Это работает для меня:
'use strict';
process.env.ORA_SDTZ = 'UTC';
const oracledb = require('oracledb');
let config = require('./dbconfig.js');
async function run() {
let connection;
try {
connection = await oracledb.getConnection(config);
let result;
try {
result = await connection.execute(`drop table mytable`);
} catch (e) {
if (e.errorNum != 942) console.error(e);
}
await connection.execute(`create table mytable (weight number, item_id varchar2(20), name varchar2(30))`);
await connection.execute(`insert into mytable (weight, item_id, name) values (0, 'dfghjkl', 'test')`);
let Bindings = [];
Bindings[0] = {
ITEM_ID: 'dfghjkl',
WEIGHT: '10',
NAME: 'test'
};
result = await connection.execute(
`UPDATE mytable SET WEIGHT = :WEIGHT WHERE ITEM_ID = :ITEM_ID AND NAME = :NAME`,
Bindings[0], {autoCommit: true, outFormat : oracledb.OBJECT});
result = await connection.execute(`select * from mytable`);
console.info(result.rows);
} catch (err) {
console.error(err);
} finally {
if (connection) {
try {
await connection.close();
} catch (err) {
console.error(err);
}
}
}
}
run();
Покажите нам реальный исполняемый скрипт, а также SQL для создания
mytable
. Я попытался угадать, что вы сделали, и мой скрипт работал нормально.