126 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Сервис интеграции ПП Парус 8 с WEB API
Дополнительный модуль: работа с БД ПП Парус 8 (Oracle)
*/
//----------------------
// Подключение библиотек
//----------------------
const oracledb = require("oracledb"); //Работа с СУБД Oracle
//------------
// Тело модуля
//------------
//Подключение к БД
const connect = prms => {
return new Promise((resolve, reject) => {
oracledb.getConnection(
{
user: prms.user,
password: prms.password,
connectString: prms.connectString
},
function(err, connection) {
if (err) {
reject(err);
} else {
resolve(connection);
}
}
);
});
};
//Отключение от БД
const disconnect = connection => {
return new Promise((resolve, reject) => {
if (connection) {
connection.close(function(err) {
if (err) {
reject(err);
} else {
resolve();
}
});
} else {
reject(new Error("No connection specified"));
}
});
};
//Исполнение запроса
const execute = prms => {
console.log("EXECUTE");
};
//-----------------
// Интерфейс модуля
//-----------------
exports.connect = connect;
exports.disconnect = disconnect;
exports.execute = execute;
/*
oracledb.getConnection(
{
user: cfg.dbConnect.user,
password: cfg.dbConnect.password,
connectString: cfg.dbConnect.connectString
},
function(err, connection) {
if (err) {
console.error(err.message);
return;
}
connection.execute(
// The statement to execute
"SELECT rn, agnabbr FROM agnlist WHERE rn = :id",
// The "bind value" 180 for the bind variable ":id"
[1431890],
// execute() options argument. Since the query only returns one
// row, we can optimize memory usage by reducing the default
// maxRows value. For the complete list of other options see
// the documentation.
{
maxRows: 1
//, outFormat: oracledb.OBJECT // query result format
//, extendedMetaData: true // get extra metadata
//, fetchArraySize: 100 // internal buffer allocation size for tuning
},
// The callback function handles the SQL execution results
function(err, result) {
if (err) {
console.error(err.message);
setTimeout(() => {
doRelease(connection);
}, 2000);
return;
}
console.log(result.metaData); // [ { name: 'DEPARTMENT_ID' }, { name: 'DEPARTMENT_NAME' } ]
console.log(result.rows); // [ [ 180, 'Construction' ] ]
setTimeout(() => {
doRelease(connection);
}, 2000);
}
);
}
);
// Note: connections should always be released when not needed
function doRelease(connection) {
connection.close(function(err) {
if (err) {
console.log("Connection closed with erros: " + err.message);
} else {
console.log("Connection closed - no erros");
}
});
}
*/