gpt4 book ai didi

node.js - nodejs oracledb 从回调中获取数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:24:36 25 4
gpt4 key购买 nike

我正在将nodejsoracle-db模块一起使用。我将尽可能简单地解释代码。首先,我将获取列信息(列名称、数据类型、长度...),然后我将从每列获取数据,最后将数据附加到特定列并取回所有列。问题是我无法从回调中获取数据。感谢您的帮助。

var oracledb = require('oracledb');
function getRows(columnName, tableName) {
var values = [] ;
oracledb.getConnection({user: "hr", password: "oracle"},
function(err, connection)
{
if (err) {console.error(err.message);return;}
connection.execute("select "+ columnName +" from "+tableName+" ",
function(err, result)
{
if (err) {console.error(err.message); return;}
var i = 0 ;
if ( i < result.rows.length ) {
values.push({rownumber: i, value: result.rows[i][0] });
i++; }
return values;
});
});
return values;
}
function getColumns() {
var Columns = [] ;
oracledb.getConnection( { user: "hr", password: "oracle" },
function(err, connection) {
if (err) { console.error(err.message); return;}
connection.execute( "select distinct table_name, column_name, data_type, data_precision, data_length,GLOBAL_STATS, NULLABLE from all_tab_columns where owner like 'HR' order by table_name ",
function(err, result) {
if(err){
console.error(err.message);
doRelease(connection);
return;}
var k = 0;
if(k < result.rows.length) {
//get data from each column
var values = getRows(result.rows[k][1], result.rows[k][0]);
//get the name of the table and the column name
Columns.push({id: k, columnName: result.rows[k][1],tableName: result.rows[k][0], values: values });
k++;

}
});
});
return Columns;
}
console.log(getColumns());

最佳答案

简化您的代码和调试。另外,尝试只使用一次连接(或者至少释放两个连接以避免连接泄漏。)。

关于node.js - nodejs oracledb 从回调中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com